枚举类简单了解

枚举类

 1 package EnumDemo;
 2 
 3 public class EnumDemo {
 4     public static void main(String[] args) {
 5         System.out.println(Color.BLUE);
 6         Color[] colors = Color.values();
 7         //得到枚举类型的一个数组   枚举类型自己有一个values()方法
 8         for (Color c : colors) {
 9             
10             //System.out.println(c);
11             //下面一条语句跟上面一条语句效果相同,也就是说,打印c时,默认调用了c的toString()方法
12             //这个toString方法输出的就是枚举值!但是如果重写了toString()方法,
13             //同时写System.out.println(c); 和System.out.println(c.toString());
14             //语句,将调用重写了的toString()方法
15             System.out.println(c.toString());//用foreach语句遍历数组,打印枚举值
16             
17         }
18         System.out.println(Person.P1.toString());
19         //System.out.println(Person.P1) 与上面语句相同,默认调用toString()方法进行输出
20         Person[] ps = Person.values();//得到Person枚举的三个对象的数组
21         for(Person p : ps) {
22             System.out.println(p);//等价于调用p.toString()
23         }
24         
25         Person p = Person.P3;
26         switch(p) {
27         case P1:
28             System.out.println("switch语句输出:" + Person.P1);
29             break;
30         case P2:
31             System.out.println("switch语句输出:" + Person.P2);
32             break;
33         case P3:
34             System.out.println("switch语句输出:" + Person.P3);
35             break;    //Person.P3       类名.常量名
36             
37             
38         }
39     
40     }
41 }
42 
43 //JVM去加载使用枚举类的时候,会预先创建多个枚举类型的对象,供外部对象来使用
44 enum Color {
45     //构造了三个Color类型的枚举对象 ,即下述语句:
46     //public static final Color RED = new Color();
47     //public static final Color BLUE = new Color();
48     //public static final Color YELLOW = new Color();
49     RED,BLUE,YELLOW; //枚举类型的值必须是第一条语句!!!
50      private Color() {
51         System.out.println("用自定义的枚举类型构造方法构造一个对象");
52         //该构造方法执行的次数与创建的枚举值的个数有关
53         
54     }
55     
56       public String toString() {
57             return "aa";
58         }
59         
60 }
61 
62 enum Person { //枚举本质上就是一个类,因此也具有属性和方法
63     P1("张明",30),P2("李磊",25),P3("韩雪",20);
64     //上面三个语句相当于下列语句:
65     //public static final Person P1 = new Person("张明",30);
66     //public static final Person P2 = new Person("李磊",25);
67     //public static final Person P3 = new Person("韩雪",20);
68     private String name;
69     //当枚举值不是第一条语句或者不是第一条写的语句时,private String name;会报错
70     private int age;
71     private Person(String name,int age) {
72         this.age = age;
73         this.name  = name;
74     }
75     public String toString() {
76         return name + "--" + age;
77     }
78 }

 

posted @ 2018-01-04 11:59  清风拂来  阅读(321)  评论(0编辑  收藏  举报