JAVA最容易忽視的數(shù)據(jù)類型之枚舉詳解
前言
Java枚舉是一個特殊的類一般表示一組常量,比如一年的 4個季節(jié),一年的 12 個月份,一個星期的7天,方向有東南西北等。今天就讓我們來學(xué)習(xí)一下在JAVA中這個特殊的類。
枚舉
枚舉是一種數(shù)據(jù)類型,用于定義一組具有相同屬性的常量集合。在枚舉中,每個常量都有一個名稱和一個關(guān)聯(lián)的值,可以通過名稱或值來引用常量。枚舉常用于減少代碼中的魔法數(shù)字或字符串,使代碼更加清晰易懂。
enum Color { RED, GREEN, BLUE; } public class Test { // 執(zhí)行輸出結(jié)果 public static void main(String[] args) { Color c1 = Color.RED; System.out.println(c1); } }
在這個枚舉中,我們定義了三個常量:
Red
,Green
和Blue
。默認(rèn)情況下,它們的值分別為0、1和2。我們將枚舉中的Red常量分配給myColor
變量,并檢查myColor是否等于枚舉中的Green常量。
Color myColor = Color.Red; if (myColor == Color.Green) { // ... }
內(nèi)部類里使用枚舉
可以在Java內(nèi)部類中使用枚舉,可以通過在內(nèi)部類中定義枚舉類型來實現(xiàn)。
public class Outer { private int x; public void doSomething() { Inner inner = new Inner(); inner.doSomethingElse(); } private class Inner { private void doSomethingElse() { Status status = Status.IN_PROGRESS; // ... } private enum Status { IN_PROGRESS, COMPLETED, FAILED } } }
在上面的代碼中,內(nèi)部類
inner
中定義了一個枚舉類型Status
。在doSomethingElse()
方法中,可以創(chuàng)建枚舉類型的實例并使用它們。
迭代枚舉元素
在Java中,我們可以使用迭代器(Iterator)來枚舉集合中的元素。
List<String> strings = new ArrayList<>(); strings.add("foo"); strings.add("bar"); strings.add("baz"); Iterator<String> iterator = strings.iterator(); while (iterator.hasNext()) { String str = iterator.next(); System.out.println(str); }
在這個示例中,我們首先創(chuàng)建了一個包含三個字符串的ArrayList。然后,我們創(chuàng)建一個迭代器對象,并使用while循環(huán)來遍歷ArrayList中的所有元素。在每次循環(huán)迭代時,我們通過調(diào)用next()方法獲取下一個元素,并將其賦值給一個字符串變量。然后,我們將該字符串打印輸出。循環(huán)會一直執(zhí)行,直到?jīng)]有更多的元素。
需要注意的是,迭代器只能單向遍歷集合,不能隨意增加或刪除元素。如果需要對集合進(jìn)行修改操作,應(yīng)該使用集合本身提供的方法進(jìn)行操作。
在 switch 中使用枚舉類
枚舉類常應(yīng)用于 switch 語句中。
public class Main { enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } public static void main(String[] args) { Day day = Day.TUESDAY; switch (day) { case MONDAY: System.out.println("Today is Monday"); break; case TUESDAY: System.out.println("Today is Tuesday"); break; case WEDNESDAY: System.out.println("Today is Wednesday"); break; case THURSDAY: System.out.println("Today is Thursday"); break; case FRIDAY: System.out.println("Today is Friday"); break; case SATURDAY: System.out.println("Today is Saturday"); break; case SUNDAY: System.out.println("Today is Sunday"); break; default: System.out.println("Invalid day"); break; } } }
在上面的代碼中,我們定義了一個
Day
枚舉類,其中包含一周中的每一天。在main
方法中,我們創(chuàng)建了一個Day
枚舉實例,并在switch語句中使用了這個枚舉實例。根據(jù)Day
的不同值,我們輸出不同的結(jié)果。
在使用枚舉類時,switch語句必須針對枚舉類型進(jìn)行匹配,否則編譯器會發(fā)出警告。此外,在枚舉類型中必須包含一個default分支,以處理可能的無效輸入。
總結(jié)
到此這篇關(guān)于JAVA最容易忽視的數(shù)據(jù)類型之枚舉的文章就介紹到這了,更多相關(guān)JAVA數(shù)據(jù)類型枚舉內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
多數(shù)據(jù)源如何實現(xiàn)事務(wù)管理
Spring中涉及三個核心事務(wù)處理接口:PlatformTransactionManager、TransactionDefinition和TransactionStatus,PlatformTransactionManager提供事務(wù)操作的基本方法,如獲取事務(wù)、提交和回滾2024-09-09Spring中@Conditional注解的詳細(xì)講解及示例
這篇文章主要介紹了Spring中@Conditional注解的詳細(xì)講解及示例,@Conditional是Spring4新提供的注解,它的作用是按照一定的條件進(jìn)行判斷,滿足條件給容器注冊bean,需要的朋友可以參考下2023-11-11mybatisplus?復(fù)合主鍵(多主鍵)?CRUD示例詳解
這篇文章主要介紹了mybatisplus?復(fù)合主鍵(多主鍵)?CRUD實例詳解,本文通過實例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03淺談mybatis 樂觀鎖實現(xiàn),解決并發(fā)問題
這篇文章主要介紹了淺談mybatis 樂觀鎖實現(xiàn),解決并發(fā)問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08SpringBoot配置Actuator組件,實現(xiàn)系統(tǒng)監(jiān)控
在生產(chǎn)環(huán)境中,需要實時或定期監(jiān)控服務(wù)的可用性。Spring Boot的actuator(健康監(jiān)控)功能提供了很多監(jiān)控所需的接口,可以對應(yīng)用系統(tǒng)進(jìn)行配置查看、相關(guān)功能統(tǒng)計等。2021-06-06遞歸出現(xiàn)棧溢出stackoverflow的問題及解決
這篇文章主要介紹了關(guān)于遞歸出現(xiàn)棧溢出stackoverflow的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09springboot 在xml里讀取yml的配置信息的示例代碼
這篇文章主要介紹了springboot 在xml里讀取yml的配置信息的示例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09