枚举类Enum
枚举概述
在java5以前,可以使用接口声明静态常亮代替枚举常量
public interface myEnum {
int MONDAY
= 0;
int TUESDAY
= 0;
int WENNESDAY
= 0;
int THURSDAY
= 0;
int FRIDAY
= 0;
}
也可以在一般类中声明一组静态常量
public static void main(String
[] args
) {
int day
= TUESDAY
;
switch (day
) {
case MONDAY
:
System
.out
.println("星期一");
break;
default:
System
.out
.println("xx");
}
}
上面代码,类型不安全,因为程序执行过程中很有可能day变量会传入一个任意的数值,不方便调试,如果通过入职输出day值,那么只能看到0~4之间的数值,但是并不知道其值代表的含义枚举类型是一种类,引用类型,具有了面向对象的特征,可以添加方法和成员变量枚举类不能被继承,但是可以实现接口
枚举类声明
[public] enum 枚举名 {
枚举常量
}
最简单的枚举类
public static void main(String
[] args
) {
WeekDays weekDays
= WeekDays
.TUSESDAY
;
System
.out
.println(weekDays
);
switch (weekDays
) {
case MONDAY
:
System
.out
.println("星期一");
break;
case TUSESDAY
:
System
.out
.println("星期二");
break;
case WEDNESDAY
:
System
.out
.println("星期三");
break;
default:
System
.out
.println("xxxx");
}
}
枚举类中成员变量和成员方法
枚举类可以像类一样包含成员变量和成员方法,成员变量可以使实例变量也可以是静态变量,成员方法可以使实例方法也可以是静态方法,但不能是抽象方法
枚举类构造方法
在枚举类中也是通过构造方法来初始化成员变量的
枚举常用方法
int ordinal(): 返回枚举常量的顺序,这个顺序根据枚举常量声明的顺序而定,顺序从0开始枚举类型[] values():静态方法,返回一个包含所有枚举变量的数组枚举类型 valueOf(String str): 静态方法,str是枚举常量对应的字符串,返回一个包含枚举类型的实例
public static void main(String
[] args
) {
WeekDaysA
[] allValues
= WeekDaysA
.values();
for (WeekDaysA weekDaysA
: allValues
) {
System
.out
.printf("%d - %s\n", weekDaysA
.ordinal() + 1, weekDaysA
);
}
WeekDaysA weekDaysA
= WeekDaysA
.FRIDAY
;
WeekDaysA weekDaysb
= WeekDaysA
.valueOf("FRIDAY");
System
.out
.println(weekDaysA
== WeekDaysA
.FRIDAY
);
System
.out
.println(weekDaysA
.equals(WeekDaysA
.FRIDAY
));
System
.out
.println(weekDaysA
== weekDaysb
);
}