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