java枚举类型

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;
	}
}

  

原文地址:https://www.cnblogs.com/liubing2018/p/8467311.html