一、枚舉類型的定義與使用
在Java中,枚舉類型是一種特殊的數據類型,用於定義一組常量。使用枚舉類型可以提高代碼的可讀性和可維護性。可以通過 enum 關鍵字定義枚舉類型:
public enum DayOfWeek {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
上面的代碼定義了一個名為 DayOfWeek 的枚舉類型,包含七個常量,分別代表一周的星期一至星期日。
使用枚舉類型時,可以通過 DayOfWeek.MONDAY 等常量來表示相應的值:
DayOfWeek day = DayOfWeek.MONDAY;
if (day == DayOfWeek.MONDAY) {
System.out.println("Today is Monday!");
}
上面的代碼定義了一個枚舉類型變量 day,並將其賦值為枚舉類型的常量 DayOfWeek.MONDAY。然後,通過比較 day 是否等於 DayOfWeek.MONDAY 來判斷今天是否是星期一。
二、switch 語句的使用
switch 語句是一種多分支語句,用於根據不同的條件執行不同的代碼塊。在Java中,switch 語句可以用於枚舉類型的判斷:
public void printDayOfTheWeek(DayOfWeek day) {
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 of the week!");
break;
}
}
上面的代碼定義了一個名為 printDayOfTheWeek 的方法,接受一個 DayOfWeek 類型的參數 day,用於打印今天是星期幾。在方法體中,使用 switch 語句根據 day 的值執行不同的代碼塊。當 day 的值為 DayOfWeek.MONDAY、DayOfWeek.TUESDAY 等枚舉類型常量之一時,就會打印相應的信息。
需要注意的是,switch 語句中的每個 case 標籤都必須是一個常量表達式,不能是變量或者方法調用。這是因為 switch 語句的實現機制是使用跳轉表(jump table)來優化分支,需要保證每個 case 標籤在編譯時就可以計算出來。
三、枚舉類型的高級用法
除了基本的枚舉類型定義和 switch 語句的使用外,Java中的枚舉類型還提供了一些高級用法,如枚舉類型的屬性、方法和構造函數。
1. 枚舉類型的屬性
枚舉類型可以定義屬性,可以通過構造函數或者直接為常量賦值來設置屬性值:
public enum DayOfWeek {
MONDAY(1, "星期一"),
TUESDAY(2, "星期二"),
WEDNESDAY(3, "星期三"),
THURSDAY(4, "星期四"),
FRIDAY(5, "星期五"),
SATURDAY(6, "星期六"),
SUNDAY(0, "星期日");
private int value;
private String desc;
private DayOfWeek(int value, String desc) {
this.value = value;
this.desc = desc;
}
public int getValue() {
return value;
}
public String getDesc() {
return desc;
}
}
上面的代碼定義了一個名為 value 和 desc 的屬性,分別用於保存枚舉類型的數字值和描述信息。可以通過 getValue 和 getDesc 方法獲取屬性值:
DayOfWeek day = DayOfWeek.MONDAY;
System.out.println("Today is " + day.getDesc());
2. 枚舉類型的方法
枚舉類型可以定義方法,可以在枚舉常量之間調用方法:
public enum Gender {
MALE {
public String getSalutation() {
return "Mr.";
}
},
FEMALE {
public String getSalutation() {
return "Ms.";
}
};
public abstract String getSalutation();
}
上面的代碼定義了一個名為 getSalutation 的抽象方法,用於獲取稱謂(Mr. 或 Ms.)。將 MALE 和 FEMALE 作為枚舉類型定義,分別實現了 getSalutation 方法。可以在枚舉類型之間調用方法:
Gender gender = Gender.FEMALE;
System.out.println("Salutation: " + gender.getSalutation());
3. 枚舉類型的構造函數
枚舉類型可以定義構造函數,可以為每個枚舉常量單獨設置構造函數:
public enum Size {
SMALL("S"),
MEDIUM("M"),
LARGE("L"),
EXTRA_LARGE("XL");
private String abbreviation;
private Size(String abbreviation) {
this.abbreviation = abbreviation;
}
public String getAbbreviation() {
return abbreviation;
}
}
上面的代碼定義了一個名為 abbreviation 的屬性,用於保存尺碼的縮寫。並為每個枚舉常量單獨設置了構造函數,用於初始化 abbreviation 屬性。可以通過 getAbbreviation 方法獲取屬性值:
Size size = Size.MEDIUM;
System.out.println("Abbreviation: " + size.getAbbreviation());
四、總結
Java枚舉類型在 switch 語句中的使用是一種常見的編程技巧,可以提高代碼的可讀性和可維護性。除了基本的枚舉類型定義和 switch 語句的使用外,枚舉類型還提供了一些高級用法,如枚舉類型的屬性、方法和構造函數。在實際編程中,可以靈活運用這些技巧,使代碼更加簡潔、清晰。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/249370.html
微信掃一掃
支付寶掃一掃