为何出现枚举
为了间接的表示一些固定的值,Java提供了枚举。
(如春夏秋冬,周一/日...)
枚举的概念
将变量法的值一一列举出来,变量的值只限于列举出来的值的范围内。
格式:
public enum s {
枚举项1,枚举项2,枚举项3,枚举项4;
}
定义枚举类要用关键字enum!!
枚举的特点:
详见代码
//枚举类的第一行必须是枚举类
//小括号内可以写其属性值
SPRING("春"){
@Override
public void show() {
System.out.println("春天到了"+this.name);
}
},SUMMER("夏"){
@Override
public void show() {
System.out.println("夏天");
}
},AUTUMN("秋"){
@Override
public void show() {
System.out.println("秋天");
}
},WINTER("冬"){
@Override
public void show() {
System.out.println("冬天");
}
};
//枚举类里可以定义成员变量
public String name;
//空参构造和代参构造
private Season(){
}
private Season(String name){
this.name = name;
}
//枚举类也有抽象方法,但是枚举项必须实现抽象方法
public abstract void show();
System.out.println(Season.SPRING.name);
System.out.println(Season.SUMMER);
System.out.println(Season.AUTUMN);
System.out.println(Season.WINTER);
//每一个枚举项其实就是该枚举的一个对象
Season spring = Season.SPRING;
Season summer = Season.SUMMER;
Season autumn = Season.AUTUMN;
Season winter = Season.WINTER;
Season.SPRING.show();
枚举的方法:
//可以通过调用获取枚举项的名称
String name = Season2.SPRING.name();
System.out.println(name);
//枚举也存在索引值,并且索引值也是从0开始
int ordinal1 = Season2.SPRING.ordinal();
int ordinal2 = Season2.SUMMER.ordinal();
int ordinal3 = Season2.AUTUMN.ordinal();
int ordinal4 = Season2.WINTER.ordinal();
System.out.println(ordinal1);
System.out.println(ordinal2);
System.out.println(ordinal3);
System.out.println(ordinal4);
//compareTo 比较两个枚举项,返回的是索引值的差值
int i = Season2.SPRING.compareTo(Season2.WINTER);
System.out.println(i);
//返回枚举常量的名称
String s = Season2.SPRING.toString();
System.out.println(s);
//获取指定枚举类中的指定名称的枚举值
Season2[] values = Season2.values();
System.out.println(values);
for (Season2 value : values) {
System.out.println(value);
}
运行结果: