public enum Color{
RED,BLUE,BLACK,YELLOWGREEN
}
1.enum很像特殊的class,实际上enum声明定义的类型就是一个类
2.这些类都是类库中Enum类的子类(java.lang.Enum<E>),它们继承了Enum中许多有用的方法
~ 枚举值都是public static final的,也就是常量,因此枚举类中的枚举值都应全部大写
~ 枚举类型是class,在枚举类型中有构造器,方法和字段.
~ 但枚举的构造器有很大的不同:
1.构造器只能在构造枚举值的时候被调用
2.构造器私有private,不允许有public构造器
~ 枚举可以在switch语句中使用
public class EnumDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(Color.BLUE);
Color[] colors = Color.values();
for(Color c:colors) {//另一种for循环格式:从枚举类型对象colors中依次赋给c
System.out.println(c);
}
Person[] person = Person.values();
for(Person p:person) {
System.out.println(p);
}
//***********switch用法****************
Person a = Person.p3;
switch(a){
case p1:
System.out.println(Person.p1);
break;
case p2:
System.out.println(Person.p2);
break;
case p3:
System.out.println(Person.p3);
break;
}
}
}
//当jvm去加载使用枚举类的时候,会预先创建多个枚举类型的对象供外界调用
//public static final Color RED = new Color();
//public static final Color BLUE = new Color();
//public static final Color YELLOW = new Color();
enum Color{
REA,BLUE,YELLOW;//枚举类型的值必须作为第一条语句出现
private Color(){//构造方法
System.out.println("构造方法");//有几个枚举值调用几次
}
}
//public static final Person p1 = new Person("张三",26);
//public static final Person p2 = new Person("李四",23);
//public static final Person p3 = new Person("王五",22);
enum Person{
p1("张三",26),p2("李四",23),p3("王五",22);
private String name;
private int age;
private Person(String name,int age) {
this.name = name;
this.age = age;
}
public String toString() {
return name+age;
}
}