1 import java.util.*; 2 public class Demo13{ 3 public static void main(String[] args) { 4 Weekday day = Weekday.SUN; 5 //int day = 1; 6 if(day.dayValue == 1 || day.dayValue == 7){ 7 System.out.println("Work at home!"); 8 }else{ 9 System.out.println("Work at office!"); 10 } 11 //因为enum是一个class,每个枚举的值都是class实例 12 //返回常量名 13 String s = day.name(); 14 //返回定义的常量的顺序,从0开始计数 15 int n = day.ordinal(); 16 System.out.println(s); // SUN 17 System.out.println(n); // 0 18 } 19 } 20 21 /* 22 通过enum定义的枚举类,和其他的class有什么区别? 23 24 1.定义的enum类型总是继承自java.lang.Enum,且无法被继承; 25 26 2.只能定义出enum的实例,而无法通过new操作符创建enum的实例; 27 28 3.定义的每个实例都是引用类型的唯一实例; 29 使用enum定义的枚举类是一种引用类型。前面我们讲到,引用类型比较,要使用equals()方法,如果使用==比较,它比较的是两个引用类型的变量是否是同一个对象。因此,引用类型比较,要始终使用equals()方法,但enum类型可以例外 30 31 因为enum类型的每个常量在JVM中只有一个唯一实例,所以可以直接用==比较 32 33 if (day == Weekday.FRI) { // ok! 34 } 35 if (day.equals(Weekday.SUN)) { // ok, but more code! 36 } 37 38 4.可以将enum类型用于switch语句 39 */ 40 enum Weekday{ 41 //定义的每个枚举常量都是枚举类的实例 42 SUN(1),MON(2),TUE(3),WED(4),THU(5),FRI(6),SAT(7); 43 44 //给每个枚举常量添加字段 45 public final int dayValue; 46 47 //私有构造器 48 private Weekday(int dayValue){ 49 this.dayValue = dayValue; 50 } 51 }