枚举(Enum)

一、定义

        有限的、确定的、数据可以作为枚举类

        例如:

        天气:春、夏、秋、冬

        星期:星期一、星期二、..... 星期天

        性别:男、女、(可能有个未知)

        这一类的信息是不变的,有限的,所以可以直接用枚举

        所以:定义一组常量时,建议使用枚举

二、格式

        1.创建Enum类,必须先创建对象信息

        2.由于枚举是不变的,也就是final修饰的,但是在枚举类中不需要final,写了会报错

        3.每个对象用 (逗号)”,“ 隔开,(分号)”;“结束

        示例:

        在输入的时候输出的是枚举类中对象的名称,原因是enum的父类是Enum,并不是Object

/**
 * 天气枚举类,春夏秋冬
 */
public enum Season {
    SPRING,
    SUMMER,
    AUTUMN,
    WINTER;

    public static void main(String[] args) {
        Season autumn = Season.AUTUMN;
        System.out.println(autumn);
    }

}

        结果:

         

三、给枚举加入属性

        1.定义属性,final修饰

        2.定义有参构造器

        3.重写toString方法

        示例:

/**
 * 天气枚举类,春夏秋冬
 */
public enum Season {
    //枚举对象
    SPRING("1","春天"),
    SUMMER("2","夏天"),
    AUTUMN("3","秋天"),
    WINTER("4","冬天");

    //参数
    private final String type;
    private final String desc;

    //有参构造器
    Season(String type, String desc) {
        this.type = type;
        this.desc = desc;
    }
    //重写toString
    @Override
    public String toString() {
        return "Season{" +
                "type='" + type + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }

    public static void main(String[] args) {
        //获取枚举信息
        Season autumn = Season.AUTUMN;
//        System.out.println(autumn);

        //获取枚举信息参数
        System.out.println(autumn);

    }

}

        结果:

         

四、枚举实现其他类

        1.枚举实现类

        2.在每个枚举类对象中都重写方法

        示例:

        接口

public interface Info {
    void show();
}

        代码 

/**
 * 天气枚举类,春夏秋冬
 */
public enum Season implements Info{
    //枚举对象
    SPRING("1","春天"){
        @Override
        public void show() {
            System.out.println("春天");
        }
    },
    SUMMER("2","夏天"){
        @Override
        public void show() {
            System.out.println("夏天");
        }
    },
    AUTUMN("3","秋天"){
        @Override
        public void show() {
            System.out.println("秋天");
        }
    },
    WINTER("4","冬天"){
        @Override
        public void show() {
            System.out.println("冬天");
        }
    };

    //参数
    private final String type;
    private final String desc;

    //有参构造器
    Season(String type, String desc) {
        this.type = type;
        this.desc = desc;
    }
    //重写toString
    @Override
    public String toString() {
        return "Season{" +
                "type='" + type + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }

    public static void main(String[] args) {
        //获取枚举信息
        Season autumn = Season.AUTUMN;
//        System.out.println(autumn);

        //获取枚举信息参数
//        System.out.println(autumn);

        //调用实现的类方法
        autumn.show();

    }
}

 结果

 五、疑惑解答

        为什么要用枚举?不用调用数据?

        原因:

        调用数据库需要查数据库,并且有时间的耗时,而且枚举都是常量并且确定的不修改的,属于没必要写在数据库中

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值