【Java】枚舉類型

預先定義的常量

枚舉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;
    	}
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章