Java自学-类和对象 枚举类型
程序员文章站
2023-11-25 22:19:04
枚举类型 步骤 1 : 预先定义的常量 枚举enum是一种特殊的类(还是类),使用枚举可以很方便的定义常量 比如设计一个枚举类型 季节,里面有4种常量 public enum Season { SPRING,SUMMER,AUTUMN,WINTER } 一个常用的场合就是switch语句中,使用枚举 ......
枚举类型
步骤 1 : 预先定义的常量
枚举enum是一种特殊的类(还是类),使用枚举可以很方便的定义常量
比如设计一个枚举类型 季节,里面有4种常量
public enum season { spring,summer,autumn,winter }
一个常用的场合就是switch语句中,使用枚举来进行判断
注:因为是常量,所以一般都是全大写
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; } } } public enum season { spring,summer,autumn,winter }
步骤 2 : 使用枚举的好处
假设在使用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; } } }
步骤 3 : 遍历枚举
借助增强型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语句,把每种枚举常量输出为中文字符串)
答案:
package charactor; public enum herotype { tank, wizard, assassin, assist, warrior, ranged, push, farming }
.
package charactor; public class hero { public string name; // 姓名 public static void main(string[] args) { herotype type = herotype.assassin; switch (type) { 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; } } }