預先定義的常量
枚舉enum是一種特殊的類(還是類),使用枚舉可以很方便的定義常量
比如設計一個枚舉類型 季節,裏面有4種常量。
public enum Season {
SPRING,SUMMER,AUTUMN,WINTER
}
一個常用的場合就是switch語句中,使用枚舉來進行判斷
注:因爲是常量,所以一般都是全大寫
Season.java
public enum Season {
SPRING,SUMMER,AUTUMN,WINTER
}
HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
Season season = Season.SPRING;
switch (season) {
case SPRING:
System.out.println("春天");
break;
case SUMMER:
System.out.println("夏天");
break;
case AUTUMN:
System.out.println("秋天");
break;
case WINTER:
System.out.println("冬天");
break;
}
}
}
使用枚舉的好處
假設在使用 switch 的時候,不是使用枚舉,而是使用 int,而 int 的取值範圍就不只是 1-4,有可能取一個超出 1-4 之間的值,這樣判斷結果就似是而非了。(因爲只有4個季節)
但是使用枚舉,就能把範圍死死的限定在這四個當中 SPRING,SUMMER,AUTUMN,WINTER
而不會出現奇怪的 第5季
public class HelloWorld {
public static void main(String[] args) {
int season = 5;
switch (season) {
case 1:
System.out.println("春天");
break;
case 2:
System.out.println("夏天");
break;
case 3:
System.out.println("秋天");
break;
case 4:
System.out.println("冬天");
break;
}
}
}
遍歷枚舉
藉助增強型for循環,可以很方便的遍歷一個枚舉都有哪些常量
public class HelloWorld {
public static void main(String[] args) {
for (Season s : Season.values()) {
System.out.println(s);
}
}
}
練習-枚舉
英雄聯盟中有這麼一些分類
TANK (坦克)
WIZARD (法師 )
ASSASSIN (刺客)
ASSIST (輔助)
WARRIOR (近戰)
RANGED (遠程 )
PUSH (推進)
FARMING (打野)
設計一個枚舉類型HeroType,使用上述分類作爲常量
再編寫一段switch語句,把每種枚舉常量輸出爲中文字符串
HeroProperty.java
public enum HeroProperty {
TANK,WIZARD,ASSASSIN,ASSIST,WARRIOR,RANGED,PUSH,FARMING;
}
HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
HeroProperty heroProperty = HeroProperty.TANK;
switch (heroProperty) {
case TANK:
System.out.println("坦克");
break;
case WIZARD:
System.out.println("法師");
break;
case ASSASSIN:
System.out.println("刺客");
break;
case ASSIST:
System.out.println("輔助");
break;
case WARRIOR:
System.out.println("近戰");
break;
case RANGED:
System.out.println("遠程");
break;
case PUSH:
System.out.println("推進");
break;
case FARMING:
System.out.println("打野");
break;
}
}
}