枚举:
用于定义常量的方式
可以将枚举类型看做一个类,继承与java.lang.Enum类,当定义一个枚举类型时,每一个枚举类型的成员都可以看做枚举类型的实例,这些枚举类型成员都默认被public,static,final修饰。
class Color
{
public static final Color RED = new Color();
public static final Color BLUE = new Color();
public static final Color GREEN = new Color();
}
定义枚举:关键字enum
public enum Constants{ Constants_A, Constants_N; }
- 各枚举值之间用 , 分割
关于枚举类型的常用方法:
- values():将枚举类型中所有枚举值以数组的形式返回。
public enum SeasonEnum {
SPRING,SUMMER,AUTUMN,WINTER;
}
class SHowEnum{
public static void main(String[] args) {
SeasonEnum[] values = SeasonEnum.values();
for (SeasonEnum seasonEnum:values) {
System.out.println(seasonEnum);
}
}
}
输出结果:
SPRING
SUMMER
AUTUMN
WINTER
- valuesOf()方法:返回指定字符串值的枚举常量
- 与comepareTo()方法:用于比较两个枚举类型对象定义是的顺序
public enum SeasonEnum {
SPRING,SUMMER,AUTUMN,WINTER;
}
class SHowEnum{
public static void main(String[] args) {
SeasonEnum[] values = SeasonEnum.values();
SeasonEnum summer = SeasonEnum.valueOf("SUMMER");
for (SeasonEnum seasonEnum:values) {
int i = seasonEnum.compareTo(summer);
System.out.print(i+"\t");
}
}
}
输入结果:
-1 0 1 2
- ordinal(): 获取某个枚举对象的索引值
public enum SeasonEnum {
SPRING,SUMMER,AUTUMN,WINTER;
}
class SHowEnum{
public static void main(String[] args) {
SeasonEnum[] values = SeasonEnum.values();
for (SeasonEnum seasonEnum:values) {
System.out.println(seasonEnum+"的索引值是:"+seasonEnum.ordinal());
}
}
}
输出结果:
SPRING的索引值是:0
SUMMER的索引值是:1
AUTUMN的索引值是:2
WINTER的索引值是:3
枚举的有参构造:
- 枚举类型的构造器必须用private修饰:
- 定义有参构造后,需要枚举成员使用相应的有参构造
public enum SeasonEnum {
SPRING("三月到五月"),
SUMMER("六月到八月"),
AUTUMN("九月到十一月"),
WINTER("十二月到二月");
private String time;
SeasonEnum(String time) {
this.time = time;
}
public String getTime() {//通过getter方法获取常量值
return time;
}
}
class SHowEnum{
public static void main(String[] args) {
SeasonEnum[] values = SeasonEnum.values();
for (SeasonEnum seasonEnum:values) {
System.out.println(seasonEnum+"的月份是:"+seasonEnum.getTime());
}
}
}
输出结果:
SPRING的月份是:三月到五月
SUMMER的月份是:六月到八月
AUTUMN的月份是:九月到十一月
WINTER的月份是:十二月到二月
使用枚举的优点:
- 类型安全
- 方便与其他程序交互
- 运行效率高