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 //给每个枚举常量添加字段 字段强烈建议声明为final
45 public final int dayValue;
46
47 //enum
的构造方法要声明为private 私有
48 private Weekday(int dayValue){
49 this.dayValue = dayValue;
50 }
51 }