91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java枚舉enum和Enum類如何使用

發布時間:2023-03-02 10:33:26 來源:億速云 閱讀:113 作者:iii 欄目:開發技術

這篇文章主要介紹“java枚舉enum和Enum類如何使用”,在日常操作中,相信很多人在java枚舉enum和Enum類如何使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”java枚舉enum和Enum類如何使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

    一、為什么需要枚舉?

    對于某些有固定幾個對象的類,比如說星期,月份,季節等等。它們可定義的對象數量是一定的,且不可更改。傳統的定義類的方式顯然無法滿足需求。

    二、枚舉介紹

    枚舉全稱Enumeration [? ?nu?m?? re??n],簡稱Enum或者enum。枚舉是一組常量的集合。枚舉類屬于一種特殊的類,里面只包含一組有限的特定的對象。枚舉的出現可以解決上述的問題。

    三、枚舉的實現方式

    1.自定義枚舉 :

    步驟 :

    ①將自定義類的構造器私有化,使其不能被隨隨便便地new出對象。

    ②取消類中提供的setXxx方法,僅保留getXxx方法,因為“枚舉類”對象僅可讀,不能隨便修改對于對象的描述。

    ③直接在自定義類中創建一組對象,使用static + final的組合實現底層優化。并且要對外暴露這組對象,因此要添加public修飾符來公開這組對象。

    ④枚舉對象名通常全部大寫,以符合常量的定義規范。

    ⑤枚舉對象根據需要,也可以有多個屬性。

    演示 :

    package knowledge.enum_;
     
    /**
     * @author : Cyan_RA9
     * @version : 1.0
     */
    public class Week {
        private String name;
     
        private Week(String name) {
            this.name = name;
        }
     
        public String getName() {
            return name;
        }
     
        public static final Week SUNDAY = new Week("Sunday");
        public static final Week MONDAY = new Week("Monday");
        public static final Week TUESDAY = new Week("Tuesday");
        public static final Week WEDNESDAY = new Week("Wednesday");
        public static final Week THURSDAY = new Week("Thursday");
        public static final Week FRIDAY = new Week("Friday");
        public static final Week SATURDAY = new Week("Saturday");
     
        @Override
        public String toString() {
            return "Week{" +
                    "name='" + name + '\'' +
                    '}';
        }
    }
     
    class Test {
        public static void main(String[] args) {
            System.out.println("一周的第" + 1 + "天是" + Week.SUNDAY);
            System.out.println("一周的第" + 2 + "天是" + Week.MONDAY);
            System.out.println("一周的第" + 3 + "天是" + Week.TUESDAY);
            System.out.println("一周的第" + 4 + "天是" + Week.WEDNESDAY);
            System.out.println("一周的第" + 5 + "天是" + Week.THURSDAY);
            System.out.println("一周的第" + 6 + "天是" + Week.FRIDAY);
            System.out.println("一周的第" + 7 + "天是" + Week.SATURDAY);
        }
    }

    運行結果 :

    java枚舉enum和Enum類如何使用

    2.enum關鍵字 :

    步驟 :

    ①將自定義類的構造器私有化,使其不能被隨隨便便地new出對象。

    ②取消類中提供的setXxx方法,僅保留getXxx方法,因為“枚舉類”對象僅可讀,不能隨便修改對于對象的描述。

    ③在定義類時,使用enum關鍵字替換掉class關鍵字。enum關鍵字用于聲明枚舉類。

    ④創建枚舉類對象時,不再和自定義枚舉一樣使用“public + static + final”關鍵字的組合形式,而是直接“常量名(形參列表)”搞定。(實際調用的仍然是構造器)。聲明枚舉對象時,必須明確調用的是哪個構造器。

    ⑤如果有多個常量對象,使用逗號','間隔即可。最后一個常量后加分號。

    ⑥如果使用enum來實現枚舉,語法規定常量必須寫在類的最前面,否則報錯。

    演示 :

    package knowledge.enum_.introduction;
     
    /**
     * @author : Cyan_RA9
     * @version : 1.0
     */
    public enum Season {
        SPRING("Spring", "warm"), SUMMER("Summer", "hot"),
        AUTUMN("Autumn", "cool"), WINTER("Winter", "cold");
     
        private String name;
        private String portrait;
     
        private Season(String name, String portrait) {
            this.name = name;
            this.portrait = portrait;
        }
     
        @Override
        public String toString() {
            return "Season{" +
                    "name='" + name + '\'' +
                    ", portrait='" + portrait + '\'' +
                    '}';
        }
    }
     
    class Test2 {
        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);
        }
    }

    運行結果 :

    java枚舉enum和Enum類如何使用

    四、枚舉類補充

    1.如果使用了enum關鍵字來聲明枚舉類,則聲明的枚舉類默認繼承了Enum類,并且底層默認是一個final類。

    2.對于“1.”的證明 :

    ①通過Ctrl + H/h快捷鍵快速查看繼承關系,如下圖所示 :

    java枚舉enum和Enum類如何使用

    ②通過javap命令來證明,如下圖所示 :

    java枚舉enum和Enum類如何使用

    3.若使用無參構造創建枚舉對象,則后面的形參列表和括號都可以省略。如下圖所示 :

    java枚舉enum和Enum類如何使用

    4.IDEA中直接創建枚舉類的方式 :

    與接口類似,也是先按照正常創建類的流程來走,如下圖所示 :

    java枚舉enum和Enum類如何使用

    選擇“Java Class”之后,在彈出的小窗口中選擇Enum,然后輸入枚舉類類名,回車即可,如下圖所示 :

    java枚舉enum和Enum類如何使用

    創建好枚舉類之后,可以看到枚舉類的圖標中間是一個“E”字母,如下圖所示 :

    java枚舉enum和Enum類如何使用

    五、關于枚舉類的父類——Enum類

    1.基本介紹 :

    java枚舉enum和Enum類如何使用

    2.常用方法 :

    ①總覽

    java枚舉enum和Enum類如何使用

    ②演示 :

    演示Ⅰ:name方法——得到當前枚舉常量的名稱。(建議優先使用toString方法)

    Season類,Test類代碼如下 :

    package knowledge.enum_.introduction;
     
    public enum Season {
        SPRING("spring", "warm"), SUMMER("summer", "hot"),
        AUTUMN("autumn", "cool"), WINTER("winter", "cold");
     
        private Season() {}
     
        private String name;
        private String portrait;
     
        private Season(String name, String portrait) {
            this.name = name;
            this.portrait = portrait;
        }
     
        @Override
        public String toString() {
            return "Season{" +
                    "name='" + name + '\'' +
                    ", portrait='" + portrait + '\'' +
                    '}';
        }
    }
     
    class Test2 {
        public static void main(String[] args) {
            //1.name
            Season season = Season.SPRING;
            Season season2 = Season.AUTUMN;
            System.out.println("season's name = " + season.name());
            System.out.println("season2's name = " + season2.name());
        }
    }

    運行結果 :

    java枚舉enum和Enum類如何使用

    演示Ⅱ:ordinal方法——返回當前枚舉常量對應的編號/次序。(即在枚舉類中的定義順序,第一個枚舉常量默認從0開始編號)

    Season類代碼不變,Test類代碼如下 :

    class Test2 {
        public static void main(String[] args) {
            //2.ordinal
            Season season = Season.SPRING;
            Season season2 = Season.AUTUMN;
            System.out.println("season's index = " + season.ordinal());
            System.out.println("season2's index = " + season2.ordinal());
        }
    }

    java枚舉enum和Enum類如何使用

    演示Ⅲ:values方法——可以返回一個當前枚舉類型的數組,里面包含了當前枚舉類中定義的所有枚舉對象。

    PS : values方法 是隱藏的底層方法,可以通過javap命令反編譯找到,如下圖所示 :

    java枚舉enum和Enum類如何使用

    Season類代碼不變,Test類代碼如下 :

    class Test2 {
        public static void main(String[] args) {
            //3.values
            Season[] seasons = Season.values();
            for (Season season : seasons) {
                System.out.println(season);
            }
        }
    }

    運行結果 :

    java枚舉enum和Enum類如何使用

    演示Ⅳ:valueOf方法——將指定字符串轉換為枚舉對象,但要求該指定字符串必須為已有的枚舉常量名,否則報異常。

    Season類代碼不變,Test類代碼如下 :

    class Test2 {
        public static void main(String[] args) {
            //4.valueOf
            Season season_0 = Season.valueOf("SPRING");
            System.out.println("season_0's name = " + season_0);
     
            Season season_00 = Season.SPRING;
            System.out.println("season_00's name = " + season_00);
     
            System.out.println("season_0 和 season_00本質上是同一個對象嗎?" + (season_0 == season_00));
        }
    }

    運行結果 :

    java枚舉enum和Enum類如何使用

    演示Ⅴ:compareTo方法——比較兩個枚舉常量的編號(返回值= 前編號 - 后編號)。如果返回值是0,說明是同一個枚舉常量。

    Season類代碼不變,Test類代碼如下 :

    class Test2 {
        public static void main(String[] args) {
            //5.compareTo
            Season season_0 = Season.valueOf("SPRING");
            Season season_00 = Season.SPRING;
            System.out.println(season_0.compareTo(season_00));
            System.out.println("==============");
     
            Season season_2 = Season.AUTUMN;
            System.out.println(season_2.compareTo(season_0));
            System.out.println("==============");
            System.out.println(season_0.compareTo(season_2));
        }
    }

    運行結果 :

    java枚舉enum和Enum類如何使用

    六、關于enum實現接口的問題

    1.使用enum關鍵字聲明枚舉類之后,該枚舉類不可以再去繼承其他類。這是因為,我們之前通過javap命令反編譯枚舉類后,可以看到枚舉類在底層隱式繼承了Enum類。而Java是單繼承機制,不支持多繼承。所以在枚舉類后使用extends關鍵字,IDEA會報錯,如下圖所示 :

    java枚舉enum和Enum類如何使用

    2.enum關鍵字聲明的枚舉類雖然不能再去繼承其他類了,但是可以去實現接口。

    演示 :

    package knowledge.enum_.port;
     
    /**
     * @author : Cyan_RA9
     * @version : 2.0
     */
    public enum Season implements Climate {
        SPRING,SUMMER,AUTUMN,WINTER,SEASON;    //別忘記這些枚舉常量底層是如何實現的!
        @Override
        public void season_circumstance() {
            System.out.println(SPRING + ": warm");
            System.out.println(SUMMER + ": hot");
            System.out.println(AUTUMN + ": cool");
            System.out.println(WINTER + ": cold");
        }
     
        public static void main(String[] args) {
            Season.SEASON.season_circumstance();
        }
    }
     
    interface Climate {    
        public abstract void season_circumstance();
    }

    運行結果 :

    java枚舉enum和Enum類如何使用

    到此,關于“java枚舉enum和Enum類如何使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    上犹县| 哈密市| 揭西县| 峨眉山市| 凤冈县| 墨玉县| 恩施市| 莲花县| 丰原市| 津市市| 阜城县| 龙陵县| 涞源县| 阳东县| 同德县| 平潭县| 桂阳县| 绥江县| 葵青区| 鄂托克旗| 长宁县| 应用必备| 当涂县| 宜丰县| 石渠县| 上思县| 德保县| 博罗县| 乐平市| 文成县| 紫云| 桐梓县| 建宁县| 兴隆县| 玉田县| 临潭县| 浦城县| 巨鹿县| 石渠县| 沛县| 黄冈市|