枚举类
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 }