在java中,我们可能需要常量类来表示,比如星期,天气,月份。下面我们星期来做演示。
常量类
public class Weekday {
public final static int MON = 0;
public final static int TUS = 1;
public final static int WED = 2;
public final static int THU = 3;
public final static int FRI = 4;
public final static int SAT = 5;
public final static int SUN = 6;
}
常量类的使用
if(Weekday.MON == 0 && Weekday.FRI == 7){}
实际上Weekday的常量值得范围是不包括的7的,但是这里依然会比较。
枚举类
定义
public enum Weekday {
MON,
TUS,
WED,
THU,
FRI,
SAT,
SUN;
}
public class Main {
public static void main(Stirng[] args){
Weekday day = Weekday.SUN;
if( Weekday.SUN == day ){
System.out.println("This is sunday!");
} else {
System.out.println("This is Saturday!");
}
}
}
这里,枚举类会做强类型检查,如果比较的范围,超出类枚举值定义的返回,会报编译错误。
编译完后的class:
public static final Weekday extends enum {
public static final Weekday MON = new Weekday();
public static final Weekday TUS = new Weekday();
...
}
常用方法
name()
Weekday.MON.name(); //"MON"
ordinal():返回当前枚举值在枚举定义的排序
Weekday.MON.ordinal();// 1
values():这个方法属于字节码提升的方法
Weekday.values(); //返回所有枚举值的数组
小结
- 枚举类比较的时候会做强类型检查,确保比较的值,在枚举定义的值范围内
- 枚举值有定义的顺序
- 可以通过values()获取到所有的枚举值