一:枚举介绍
1. 定义:
属于引用数据类型, 是一种比较特殊的类,其枚举项均是该定义枚举类的对象实例
2. 代码中的定义形式:
修饰符 enum 枚举类名 {
枚举项1, 枚举项2 ...;
其他成员(和普通类一样,常量、方法...)
}
enum A { X,Y,Z }将该枚举A类反编译后(使用javap 字节码文件名即可反编译)如下类黄色部分的结构
enum A {
/*
第一行有效数据必须是枚举项,枚举项 = 就是一个一个的常量,被static final修饰,每个常量记录的是此枚举(A)的对象
如下: 每个枚举项之间用 , 隔开 以 ; 结束
ONE_NUMBER 枚举项1 , TWO_ENUM 枚举项2 ...
*/
X, Y, Z;// 此处的分隔符,如果后续无代码逻辑,则不需要写
// 属性
int age = 100;
// 无参构造,必须私有
private A() {}// 可以省略 private 关键字
A(String name){}
// 方法
void show() {
System.out.println("show 展示自己的才华");
}
}
3.枚举类的ordinal方法使用
enum A { X,Y,Z } // ordinal()方法: 打印的是枚举项索引位置 System.out.println(A.X.ordinal()); System.out.println(A.Y.ordinal()); System.out.println(A.Z.ordinal());0
1
2
二:枚举日常场景使用
使用场景: 当我们定义一组数据,数据就是几个固定的值,建议使用枚举,例如性别, 季节, 月份, 星期, 时间单位,生肖...
// 枚举类区分季节 enum Season{ SPRING, SUMMER, AUTUMN, WINTER, SSS } // 其他方式区分季节 class Constant { public static int SPRING = 0; public static int SUMMER = 1; public static int AUTUMN = 2; public static int WINTER = 3; } public class Test { public static void main(String[] args) { /** * 两种方法对比: * 1. 使用常量的方式来区分季节, 可以传递任何常量,包括不在代码中定义的常量, * 最终会造成代码问题产生,如我传递了一个 未定义的常量 10,没有与之匹配的逻辑 * 2. 枚举格式来区分,如果不会出现 枚举中没有定义的语句,如果出现了,编译器会 * 报红色, 如 seasonSelectEnum(10), 编译器会去自动提醒 **/ seasonSelectConstant(Constant.AUTUMN); seasonSelectEnum(Season.AUTUMN); } private static void seasonSelectConstant(int season) { switch (season) { case 0: System.out.println("是春季,最喜欢的季节"); break; case 1: System.out.println("是夏季,最喜欢的季节"); break; case 2: System.out.println("是秋季,最喜欢的季节"); break; case 3: System.out.println("是冬季,最喜欢的季节"); break; } } private static void seasonSelectEnum(Season season) { 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; } } }