1. 程式人生 > 其它 >Oracle19c安裝(1) - 使用Centos7安裝Oracle19c之環境準備

Oracle19c安裝(1) - 使用Centos7安裝Oracle19c之環境準備

列舉

自定義類實現列舉

1.不需要提供set方法,因為列舉物件值通常為只讀

2.對列舉物件/屬性使用final + static共同修飾,實現底層優化

3.列舉物件名通常使用全部大寫,常量的命名規範

4.列舉物件根據需要,也可以有多個屬性

package Enumeration01;



/**
 * @author gaoqinghui
 * @date 2022/5/3 23:40
 */
public class Enumeration02 {
    public static void main(String[] args) {
        System.out.println(Season.SPRING);
        System.out.println(Season.SUMMER);
        System.out.println(Season.AUTUMN);
        System.out.println(Season.WINTER);

    }
}
//演示定義列舉型別
class Season {//類
    private String name;
    private String desc;    //描述

    //定義了四個固定物件。
    public static final Season SPRING = new Season("春天","溫暖");
    public static final Season SUMMER = new Season("夏天","炎熱");
    public static final Season AUTUMN = new Season("秋天","涼爽");
    public static final Season WINTER = new Season("冬天","寒冷");
    //1.將構造器私有化,防止直接被new
    //2.去掉set方法,防止屬性被修改
    //3.在Season內部建立固定物件
    //4.優化,可以加入final修飾符
    private Season(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    public String getName() {
        return name;
    }


    public String getDesc() {
        return desc;
    }

    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

小結:

1.構造器私有化

2.本類內部建立一組物件

3.對外暴露物件(通過為物件新增public final static修飾符)

4.可以提供get方法,但是不要提供set

使用列舉類關鍵字來定義列舉類

1.使用關鍵字enum代替class

2.直接使用SPRING("春天","溫暖"), 常量名(實參列表)

3.如果有多個常量(物件),使用,間隔

4.如果使用enum來實現列舉,要求將定義常量物件放在行首

5.如果我們使用的是無參構造器,建立常量物件,則可以省略括號和內容

6.當我們使用enum關鍵字開發一個列舉類時,預設會繼承Enum類,而且是一個final類

7.使用enum關鍵字後,就不能再繼承其他類,因為enum會隱式繼承Enum類,而Java是單繼承機制

8.列舉類和普通類一樣,可以實現介面,如下形式:

enum 類名 implements 介面1,介面2

package Enumeration01;

/**
 * @author gaoqinghui
 * @date 2022/5/4 16:26
 */
public class Enumeration03 {
    public static void main(String[] args) {
        System.out.println(Season2.AUTUMN);
        System.out.println(Season2.SPRING);
        System.out.println(Season2.SUMMER);
        System.out.println(Season2.WINTER);
    }
}

enum Season2 {
//    public static final Season2 SPRING = new Season2("春天","溫暖");
//    public static final Season2 SUMMER = new Season2("夏天","炎熱");
//    public static final Season2 AUTUMN = new Season2("秋天","涼爽");
//    public static final Season2 WINTER = new Season2("冬天","寒冷");
    //如果使用了enum來實現列舉類
    //1.使用關鍵字enum代替class
    //2.直接使用SPRING("春天","溫暖"), 常量名(實參列表)
    //3.如果有多個常量(物件),使用,間隔
    //4.如果使用enum來實現列舉,要求將定義常量物件放在行首
    //5.如果我們使用的是無參構造器,建立常量物件,則可以省略括號和內容
    //6.當我們使用enum關鍵字開發一個列舉類時,預設會繼承Enum類,而且時一個final類
    SPRING("春天","溫暖"),
    SUMMER("夏天","炎熱"),
    AUTUMN("秋天","涼爽"),
    WINTER("冬天","寒冷"),
    WHAT;

    private String name;
    private String desc;

    private Season2(){

    }
    private Season2(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    public String getName() {
        return name;
    }

    public String getDesc() {
        return desc;
    }

    @Override
    public String toString() {
        return "Season2{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

列舉方法

package Enumeration01;

/**
 * @author gaoqinghui
 * @date 2022/5/4 17:00
 */
public class EnumerationMethod {
    public static void main(String[] args) {

        Season2 autumu = Season2.AUTUMU;
        //輸出列舉物件常量名稱
        System.out.println(autumu.name());

        //ordinal()輸出的時該列舉物件的次序編號,從0開始
        //AUTUMN列舉物件時Season列舉類中第三個,編號從0開始
        System.out.println(autumu.ordinal());

        //從反編譯可以看到,values方法,返回Season2[]
        //含有定義的所有列舉物件
        //也就是返回當前列舉類中的所有常量
        Season2[] values = Season2.values();
        for(Season2 season: values){//增強for迴圈
            System.out.println(season);
        }

        //valueOF:將字串轉換為列舉物件,要求字串必須為已有常量名,否則異常
        Season2 autumu1 = Season2.valueOf("AUTUMU");
        System.out.println("autumu1= " + autumu1);
        System.out.println(autumu == autumu1);  //true

        //compareTo:比較兩個列舉常量,比較的就是位置號
        //比較的位置號返回的值為 self.ordinal - other.ordinal
        //也就是自己的位置編號減去比較的那個位置編號
        //下面這個例子中就是AUTUMU對應的位置編號減WINTER對應的位置編號
        //AUTUMU的位置編號是2,WINTER的位置編號是3,返回的是-1
        System.out.println(Season2.AUTUMU.compareTo(Season2.WINTER));
    }
}

列舉型別中的構造方法:

package Enumeration01;

/**
 * @author gaoqinghui
 * @date 2022/5/4 18:18
 */
public class EnumerationExercise02 {
    enum ColorEnum {
        RED(1,"我是紅色"),
        BLUE(2,"我是藍色"),
        GREEN(3,"我是綠色");

        private final int value;
        private final String description;

        ColorEnum(int value, String description) {
            this.value = value;
            this.description = description;
        }

        public int getValue() {
            return value;
        }

        public String getDescription() {
            return description;
        }

        public static ColorEnum valueOf(int value){
            switch (value){
                case 1:
                    return ColorEnum.RED;
                case 2:
                    return ColorEnum.BLUE;
                case 3:
                    return ColorEnum.GREEN;
                default:
                    return null;
            }
        }
    }

    public static void main(String[] args) {
        for(ColorEnum c : ColorEnum.values()){
            System.out.println("列舉成員:" + c + "值:" +
                    c.getValue() + " 描述:" + c.getDescription());
        }
        System.out.println("值轉換稱列舉:" + ColorEnum.valueOf(2));
        System.out.println("字串轉換成列舉:" + ColorEnum.valueOf("GREEN"));
    }
}

列舉中實現介面:

列舉類中的抽象方法/介面實現,需要列舉類中的每個物件都對其進行實現。

package Enumeration01;

interface d {
    public int getValue();
    public String getDescription();
}
/**
 * @author gaoqinghui
 * @date 2022/5/4 18:42
 * 列舉中實現介面
 * 可以將這個getDescription()方法放置在介面中,
 * 使列舉型別實現介面,然後使每個列舉型別實現介面中的方法。
 */


public enum EnumerationExercise03 implements d{

    RED{
        public int getValue() {
            return 1;
        }

        public String getDescription() {
            return "我是紅色";
        }
    },
    BLUE{
        public int getValue() {
            return 2;
        }

        public String getDescription() {
            return "我是藍色";
        }
    },
    GREEN{
        public int getValue() {
            return 3;
        }

        public String getDescription() {
            return "我是綠色";
        }
    };


    public static void main(String[] args) {

        for (EnumerationExercise03 c: EnumerationExercise03.values()){
            System.out.println("列舉成員:" + c + "值:" +
                    c.getValue() + " 描述:" + c.getDescription());
        }
    }
}