1、枚举(enum)
enum
是一个特殊的类,代表一组常量(不可更改的变量,如,final
变量)。
要创建enum
,请使用enum
关键字(而不是类或接口),并用逗号分隔常量。请注意,它们应使用大写字母:
例如:
访问enum
中常量可以使用.
的方式访问:
enum Level { LOW, MEDIUM, HIGH }
如访问枚举类型Level
中LOW
则使用Level.LOW
2、类中定义枚举
还可以在类中包含一个enum
:
例如:
public class Main { enum Level { LOW, MEDIUM, HIGH } public static void main(String[] args) { Level myVar = Level.MEDIUM; System.out.println(myVar); } }
3、switch语句中的enum
枚举常用于switch
语句中,来判断相应的值:
例如:
public class Main { public static void main(String[] args) { Level myVar = Level.MEDIUM; switch(myVar) { case LOW: System.out.println("Low level"); break; case MEDIUM: System.out.println("Medium level"); break; case HIGH: System.out.println("High level"); break; } } } enum Level { LOW, MEDIUM, HIGH }
4、循环遍历枚举类型
枚举类型具有values()
方法,该方法返回所有枚举常量的数组。 当要遍历枚举的常量时,此方法很有用:
例如:
for(Level myVar : Level.values()){ System.out.println(myVar); }
5、枚举的values(), ordinal() 和 valueOf() 方法
enum
定义的枚举类默认继承了java.lang.Enum
类,并实现了 java.lang.Seriablizable
和 java.lang.Comparable
两个接口。
values()
, ordinal()
和 valueOf()
方法位于 java.lang.Enum
类中:
values()
返回枚举类中所有的值。ordinal()
方法可以找到每个枚举常量的索引,就像数组索引一样。valueOf()
方法返回指定字符串值的枚举常量。
1)给枚举添加字段和方法
可以在枚举中添加字段和方法,使其更加灵活。
public class Main { public static void main(String[] args) { // 输出: 2 System.out.println(Day.MONDAY.getDayNumber()); } } enum Day { SUNDAY(1), MONDAY(2), TUESDAY(3), WEDNESDAY(4), THURSDAY(5), FRIDAY(6), SATURDAY(7);
private int dayNumber; Day(int dayNumber) { this.dayNumber = dayNumber; } public int getDayNumber() { return this.dayNumber; } }
2)使用枚举进行比较
枚举常量可以使用 ==
来比较。
import java.time.DayOfWeek; public class DayExample { public static void main(String[] args) { // 可以替换为其他天,例如 DayOfWeek.TUESDAY DayOfWeek today = DayOfWeek.MONDAY; if (today == DayOfWeek.MONDAY) { System.out.println("Today is Monday"); } else { System.out.println("Today is not Monday"); } } }
6、枚举与类之间的区别
枚举可以像class一样具有属性和方法。唯一的区别是枚举常量是不可更改,不能用于创建对象,并且不能扩展其他类(但可以实现接口)。