创建枚举需要使用关键字enum。
public enum Color {
Red,Yellow,Blue,Blank,Green;//枚举常量。被隐式声明为Color的共有、静态、final成员。
//在Java语言中,这些常量是子类型的(self-typed)
}
package com.itheima.enum1;
public class Demo1 {
public static void main(String[] args) {
//Color c=new Color();
// 不能使用new实例化枚举,会报错
Color c;
c = Color.Red;//赋值在Color枚举中定义的值
switch (c) {//枚举可以用在switch中,case使用的常量必须与switch表达式使用的枚举类型相同
case Red:
System.out.println("red");
break;
case Blank:
System.out.println("blank");
break;
case Blue:
System.out.println("blue");
break;
case Green:
System.out.println("green");
break;
case Yellow:
System.out.println("yellow");
break;
}
}
}
package com.itheima.enum1;
public class Demo2 {
public static void main(String[] args) {
//所有枚举都包含两个预定义方法:values()和valueOf()
//values方法返回一个包含枚举常量列表的数组
Color[] colors=Color.values();
for(Color c:colors){
System.out.println(c);
}
System.out.println("-----------");
//valueOf方法返回传递到参数str的字符串相对应的枚举常量
Color col = Color.valueOf("Red");
System.out.println(col);
}
}
java枚举是类类型。可以为枚举提供构造函数、添加实例变量和方法,甚至可以实现接口。 枚举有两条限制: (1)枚举不能继承其他类。但是所有枚举都自动继承超类 java.lang.Enum (2)枚举不能是超类
public enum Apple {
Jonathan(10), GoldenDel(9), RedDel, Winesap(15), Cortland(8);
//常量后面括号里的数字为构造方法的参数
private int price;
Apple() {
this.price = 0;
}
//RedDel没有提供参数,则会调动默认构造方法
Apple(int price) {
this.price = price;
}
public int getPrice() {
return price;
}
}
public class AppleDemo {
public static void main(String[] args) {
Apple a;
a = Apple.Cortland;
System.out.println(a + "---" + a.getPrice());
//输出Cortland的价格
System.out.println(Apple.RedDel.getPrice());
//输出RedDel的价格,因调用的默认方法,价格为初始化的0
}
}