1.概念:枚举就是表示一些固定的值(常量) 使用枚举项来表示这些固定的值,枚举项 就是对象
2.定义枚举类的语法:
访问修饰符 enum 枚举类的名称 {
枚举项
}
例如: public enum Color{
RED,YELLOW
}
3.特点:
A.枚举类中每一个枚举项都是一个对象
public enum Color {
//枚举项 每一个枚举项都是一个对象
RED{
@Override
public String getColor() {
return "红色";
}
},BLUE{
@Override
public String getColor() {
return "蓝色";
}
},YELLOW{
@Override
public String getColor() {
return "黄色";
}
};
private String name;
Color(){
}
public abstract String getColor();
}
B.所有的枚举类父类都是Enum
C.枚举项必须定义在枚举类的第一行
D.枚举类可以有成员变量
E.枚举类中只能有私有的构造方法 默认也是私有的构造方法
F.枚举项 可以直接通过枚举类.枚举项进行获取
G.枚举类中 可以有抽象方法 但是每一个枚举项必须实现这个抽象方法
public class Test {
public static void main(String[] args) {
System.out.println(Color.RED);
System.out.println(Color.YELLOW);
}
}
方法的名称 方法的描述
public fifinal String name() 返回此枚举常量的名称
public String toString() 返回枚举常量的名称
public fifinal int ordinal() 返回枚举常量的序数(索引是从0开始的)
public fifinal int compareTo(E o) 获取两个枚举项索引差值
public static T valueOf(ClassenumType, String name) 返回带指定名称的指定枚举类型
的枚举常量
values() 返回所有的枚举项
public class Test01 {
public static void main(String[] args) {
// Color r = Color.RED;
Week w = Week.星期二;
Week w1 = Week.星期一;
//获取枚举项目的名称
System.out.println(w.name());
System.out.println(w.toString());
//获取枚举项索引
System.out.println(w.ordinal());
//获取两个枚举项的差值
System.out.println(w.compareTo(w1));
Week w2 = Week.valueOf(Week.class, "星期一");
System.out.println(w2.name());
//获取所有的枚举项
Week[] values = Week.values();
for (Week e :values){
System.out.println(e.name());
}
}
}
案例
step01 需求:定义一个枚举类(定义枚举项来表示一周) 使用 switch来打印一周的伙食
step02 分析
1.定义一个枚举类
2.使用switch
代码----枚举类
public enum Week {
星期一,星期二,星期三,星期四,星期五,星期六,星期日;
}
代码----测试类
public class Test {
public static void main(String[] args) {
//获取枚举项
Week w = Week.星期五;
switch (w){
case 星期一:
System.out.println("猪脚饭");
break;
case 星期二:
System.out.println("海参");
break;
case 星期三:
System.out.println("韭菜");
break;
case 星期四:
System.out.println("鲍鱼");
break;
case 星期五:
System.out.println("烧鸭饭");
break;
case 星期六:
System.out.println("水饺");
break;
case 星期日:
System.out.println("吃土");
break;
}
}
}