一、枚举类型
使用枚举类型,可以取代前面学习过的定义常量的方式,同时枚举类型还赋予程序在编译时进行检查的功能。
1.1使用枚举类型设置变量。
枚举类型语法:public enum Constants{
Constants_A,
Constants_B,
Constants_C,
}
注:Constants表示枚举类名。枚举中已经定义好了final public static
public enum season {
SPRING, SUMMER, AUTUMN, WINTER;// 将常量放在枚举类型中
}
public static void method(season s) { // 定义一个参数对象是枚举类型的方法
switch (s) { // 根据枚举类型对象做不同操作
case SPRING:
System.out.println("这是春天");
break;
case SUMMER:
System.out.println("这是夏天");
break;
case AUTUMN:
System.out.println("这是秋天");
break;
case WINTER:
System.out.println("这是冬天");
break;
}
}
public static void main(String[] args) {
method(season.AUTUMN);//这是秋天
}
枚举设置常量:1.需要传入对象 2.防止了常量名的相同
1.2深入了解枚举类型
枚举类型较传统定义变量的方式,除了具有参数类型检测的优势之外,还具有其他方面的优势。
1.2.1values()方法
values()方法可以将枚举类型成员以数组的形式返回。
语法:枚举类型名称.values()
public enum season {
first,second,third,forth,fifth
}
public static void main(String[] args) {
for(int i=0;i
System.out.println("枚举类型成员变量:"+season.values()[i]);
}
}
image.png
1.2.2valueOf()
valueOf()可以实现将普通字符串转换为枚举实例
语法:枚举类型名称.valueOf(“abc”)
public enum season {
first,second,third,forth,fifth
}
public static void main(String[] args) {
season c1=season.first;
season c2 =season.valueOf("first");
System.out.println("两种构造方法是否相同"+(c1==c2));//true
}
注意:普通字符串应该是枚举类型中的
1.2.3compareTo()方法
compareTo()方法比较两个枚举对象在定义时的顺序
语法:枚举对象.compareTo()
参数在调用该方法的枚举对象之前:返回正值
参数与调用该方法的枚举对象相同:返回0
参数在调用该方法的枚举对象之后:返回负值
public enum season {
first,second,third,forth,fifth
}
public static void main(String[] args) {
season c3= season.third;
for(int i=0;i
System.out.println(c3+"与"+season.values()[i]+"比较的结果为"+c3.compareTo(season.values()[i]));
}
}
image.png
1.2.4ordinal()方法
ordinal()方法得到枚举成员的位置索引。
语法:枚举对象.ordinal()
public enum season {
first,second,third,forth,fifth
}
public static void main(String[] args) {
for(int i=0;i
System.out.println(season.values()[i]+"的编号为"+season.values()[i].ordinal());
}
}
image.png