一:什么是枚举
- 是一种特殊的类,用于表示固定数量的常量,提供了一种比常量更为安全、类型安全且易读的方式来表示一组固定的常量
- java定义枚举类型时使用的关键字是enum,与class关键字类似,但前者是定义枚举类型,后者是定义类类型
- 注意:枚举值一般是大写的字母,多个值之间以逗号分隔
- 使用场景
- 表示一组固定的常量:如星期几、月份、颜色等。
- 在switch语句中使用:枚举类型非常适合在switch语句中使用,因为它们的值是有限的,且类型安全。
- 作为Map的键或Set的元素:由于枚举值是对象,因此可以作为Map的键或Set的元素。
二:没有枚举类型时定义常量常见
public class DayConstant {
public static final int MONDAY =1;
public static final int TUESDAY=2;
public static final int WEDNESDAY=3;
public static final int THURSDAY=4;
public static final int FRIDAY=5;
public static final int SATURDAY=6;
public static final int SUNDAY=7;
}
三:使用枚举类型定义
package chapter13;
public enum DayEnum {
MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
四:常用API方法
- values() 方法:该方法返回枚举类中的所有枚举值的数组。
- valueOf(String name) 方法:该方法返回与指定名称相关联的枚举值。如果找不到具有指定名称的枚举值,则会抛出IllegalArgumentException。
- name() :返回此枚举常量的名称
五:代码精析及注意事项:
package chapter13;
public class EnumDemo {
public static void main(String[] args) {
System.out.println(DayEnum.SUNDAY);
DayEnum[] values = DayEnum.values();
for(DayEnum dayEnum: values){
System.out.println(dayEnum);
}
DayEnum monday = DayEnum.valueOf("MONDAY");
System.out.println("monday : "+ monday.name());
System.out.println("下标位置为: "+ monday.ordinal());
}
}
- 注意事项
- 枚举值在枚举类中默认是public static final的,且其名称通常使用大写字母。
- 枚举类的构造函数默认是私有的,以防止在枚举类外部创建枚举值的实例。
- 枚举类不能继承其他类(因为枚举类隐式地继承了java.lang.Enum类),但可以实现接口。