Java-枚举详解

一:枚举介绍

1. 定义:
            属于引用数据类型, 是一种比较特殊的类,其枚举项均是该定义枚举类的对象实例
2. 代码中的定义形式:

修饰符 enum 枚举类名 {
   枚举项1, 枚举项2 ...;

   其他成员(和普通类一样,常量、方法...)
}
enum A {
    X,Y,Z
}

将该枚举A类反编译后(使用javap 字节码文件名即可反编译)如下类黄色部分的结构

enum A {
    /*
        第一行有效数据必须是枚举项,枚举项 = 就是一个一个的常量,被static final修饰,每个常量记录的是此枚举(A)的对象
        如下: 每个枚举项之间用 , 隔开 以 ; 结束
        ONE_NUMBER 枚举项1 , TWO_ENUM 枚举项2 ...
     */
    X, Y, Z;// 此处的分隔符,如果后续无代码逻辑,则不需要写

    // 属性
    int age = 100;

    // 无参构造,必须私有
    private A() {}// 可以省略 private 关键字
    A(String name){}

    // 方法
    void  show() {
        System.out.println("show 展示自己的才华");
    }
}

3.枚举类的ordinal方法使用

enum A { 
    X,Y,Z 
}

// ordinal()方法: 打印的是枚举项索引位置
System.out.println(A.X.ordinal());
System.out.println(A.Y.ordinal());
System.out.println(A.Z.ordinal());

0

1

2

二:枚举日常场景使用

使用场景: 当我们定义一组数据,数据就是几个固定的值,建议使用枚举,例如性别, 季节, 月份, 星期, 时间单位,生肖... 

// 枚举类区分季节
enum Season{
    SPRING, SUMMER, AUTUMN, WINTER, SSS
}
// 其他方式区分季节
class Constant {
    public static int SPRING = 0;
    public static int SUMMER = 1;
    public static int AUTUMN = 2;
    public static int WINTER = 3;
}
public class Test {
    public static void main(String[] args) {
        /**
          * 两种方法对比:
         *  1. 使用常量的方式来区分季节, 可以传递任何常量,包括不在代码中定义的常量,
         *  最终会造成代码问题产生,如我传递了一个 未定义的常量 10,没有与之匹配的逻辑
         *  2. 枚举格式来区分,如果不会出现 枚举中没有定义的语句,如果出现了,编译器会
         *  报红色, 如 seasonSelectEnum(10), 编译器会去自动提醒
        **/
        seasonSelectConstant(Constant.AUTUMN);
        seasonSelectEnum(Season.AUTUMN);
    }

    private static void seasonSelectConstant(int season) {
        switch (season) {
            case 0:
                System.out.println("是春季,最喜欢的季节");
                break;
            case 1:
                System.out.println("是夏季,最喜欢的季节");
                break;
            case 2:
                System.out.println("是秋季,最喜欢的季节");
                break;
            case 3:
                System.out.println("是冬季,最喜欢的季节");
                break;
        }
    }

    private static void seasonSelectEnum(Season season) {
        switch (season) {
            case SPRING:
                System.out.println("是春季,最喜欢的季节");
                break;
            case SUMMER:
                System.out.println("是夏季,最喜欢的季节");
                break;
            case AUTUMN:
                System.out.println("是秋季,最喜欢的季节");
                break;
            case WINTER:
                System.out.println("是冬季,最喜欢的季节");
                break;
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值