枚举类

作者: allen丿 | 来源:发表于2020-05-16 07:57 被阅读0次

    在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()获取到所有的枚举值

    相关文章

      网友评论

          本文标题:枚举类

          本文链接:https://www.haomeiwen.com/subject/hbtlohtx.html