目录
一、枚举
1.什么是枚举
枚举:包含一些定义好的特定的值,比如星期、季节
2.枚举的格式
格式:public enum 枚举类名{ 枚举项1,枚举项2,...; }
3.枚举的特点
- 1.所有的枚举类都是Enum的子类
- 2.可以通过“枚举类名.枚举项名称”去访问指定的枚举项
- 3.每一个枚举项都是该枚举类的一个对象
- 4.枚举也是一个类,也可以定义成员变量
- 5.枚举的第一行必须是枚举项,最后的分号不建议省略
- 6.枚举类也可以有构造器,但必须是private的;枚举项的用法: 枚举("")
- 7.枚举类也可以有抽象方法,但枚举项必须重写该方法
4.代码示例
public class EnumDemo_02 {
public static void main(String[] args) {
//2.可以通过“枚举类名.枚举项名称”去访问指定的枚举项
System.out.println(SeasonDemo_01.SPRING);
System.out.println(SeasonDemo_01.SUMMER);
System.out.println(SeasonDemo_01.AUTUMN);
System.out.println(SeasonDemo_01.WINTER);
//3.每一个枚举项都是该枚举类的一个对象
SeasonDemo_01 spring = SeasonDemo_01.SPRING;//变量的类型是SeasonDemo_01类型
//4.枚举也是一个类,也可以定义成员变量
//5.枚举的第一行必须是枚举项,最后的分号不建议省略
//6.枚举类也可以有构造器,但必须是private的;枚举项的用法: 枚举("")
// 7.枚举类也可以有抽象方法,但枚举项必须重写该方法
}
}
public enum SeasonDemo_01 {
SPRING("春") {
@Override
public void show() {
System.out.println(this.name);
}
//如果枚举类中有抽象方法,就必须在枚举项中重写
}, SUMMER("夏") {
@Override
public void show() {
System.out.println(this.name);
}
}, AUTUMN("秋") {
@Override
public void show() {
System.out.println(this.name);
}
}, WINTER("冬") {
@Override
public void show() {
System.out.println(this.name);
}
};
public String name;
//空参构造
private SeasonDemo_01() {
}
//有参构造
private SeasonDemo_01(String name) {
this.name = name;
}
//抽象方法
public abstract void show();
}
5.枚举常用方法
-
String name() 获取枚举项名称
-
int ordinal() 返回枚举项在枚举类中的索引值
-
int compareTo( E o) 比较俩个枚举项,返回的是索引值的差值
-
String toString() 返回枚举项的名称
-
static <T> valueOf(Class<T> type, String name) 获取指定枚举类中的指定名称的枚举值
-
values() 获得所有的枚举项
代码示例:
public class EnumDemo {
public static void main(String[] args) {
//String name() 获取枚举项名称
Season name = Season.SPRING;
System.out.println(name);
System.out.println("-------------------------------");
//int ordinal() 返回枚举项在枚举类中的索引值
int index1 = Season.SPRING.ordinal();
int index2 = Season.SUMMER.ordinal();
int index3 = Season.AUTUMN.ordinal();
int index4 = Season.WINTER.ordinal();
System.out.println(index1);
System.out.println(index2);
System.out.println(index3);
System.out.println(index4);
System.out.println("-------------------------------");
//int compareTo( E o) 比较俩个枚举项,返回的是索引值的差值
int result = Season.SPRING.compareTo(Season.WINTER);
System.out.println(result);
System.out.println("-------------------------------");
//String toString() 返回枚举项的名称
String s = Season.SPRING.toString();
System.out.println(s);
System.out.println("-------------------------------");
//static <T> valueOf(Class<T> type, String name)
//获取指定枚举类中的指定名称的枚举值
Season spring = Enum.valueOf(Season.class, "SPRING");
System.out.println(spring);
System.out.println("-------------------------------");
//values() 获得所有的枚举项
Season[] values = Season.values();
for (Season value : values) {
System.out.println(value);
}
}
}