JAVA学习笔记——第十一章 枚举和注解

一、引出枚举类

1.先看一个需求demo

package com.hspedu.enum_;

public class Enumration01 {
    public static void main(String[] args) {
        Season Spring = new Season("春天", "温暖");
        Season Summer = new Season("夏天", "炎热");
        Season Autumn = new Season("秋天", "潮湿");
        Season Winter = new Season("冬天", "寒冷");
        //对于季节来说,他的对象是固定的四个不会有更多,如果按照这个设计类的思路,不能体现季节是固定的四个对象。
        // 因此这样的设计不好
        Autumn.setName("XXX");
        Autumn.setDesc("hahaha");
        //可以引出枚举类,把具体的对象一个一个列举出来的类
        //称为枚举类
    }
}

class Season {
    private String name;
    private String desc;//描述

    public Season(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

2.创建Season对象有如下的特点:

1).季节的值是有限的几个值(spring,summer,autumn。wiinter)

2).只读,不需要修改

3.解决方案-枚举

1)枚举对应英文enumeration

2)枚举是一组常量的集合

3)枚举是一种特殊的类,里面只包含一组有限的特定的对象

4.枚举的两种实现方式

1.自定义类实现枚举

package com.hspedu.enum_;

public class Enumration02 {
    public static void main(String[] args) {
        System.out.println(Season.SPRING);
    }
}
//演示自定义枚举实现
//1.构造器私有化,防止直接被new出来
//2.把setXXX相关方法去掉,防止属性被修改
//3.在Season内部,直接创建固定的对象
//4.可以加一个final,final+static可以跳过类加载,调用final+ static的变量,你不可能去修改,可以不需要类加载,底层优化,避免了类加载
//补充:这里出现了误会,去看了前面的final关键字。其实这里并没有跳过类加载,因为它new了一定会进行类加载,这里只是想说明常量不能修改
class Season {
    private String name;
    private String desc;//描述

    //定义了四个对象
    public final static Season SPRING = new Season("春天","温暖");//常量必须大写规范
    public final static Season SUMMEE = new Season("夏天","炎热");
    public final static Season AUTUMN = new Season("秋天","潮湿");
    public final static Season WINTER = new Season("冬天","寒冷");

    private Season(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
    public String getDesc() {
        return desc;
    }
    public String getName() {
        return name;
    }
    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

2. 使用关键字enum实现类加载

package com.hspedu.enum_;

public class Enumeration3 {
    public static void main(String[] args) {
        System.out.println(Season2.SPRING);
        System.out.println(Season2.SUMMER);
    }
}
//演示关键字实现枚举
enum Season2 {
    //定义了四个对象
//    public final static Season2 SPRING = new Season2("春天","温暖");//常量必须大写规范
//    public final static Season2 SUMMEE = new Season2("夏天","炎热");
//    public final static Season2 AUTUMN = new Season2("秋天","潮湿");
//    public final static Season2 WINTER = new Season2("冬天","寒冷");
//如果使用enum来实现枚举类
    //1.使用关键字替代class
    //2.public final static Season2 SPRING = new Season2("春天","温暖");直接使用    SPRING("春天","温暖");
    //其实格式就是常量名(SPRING)+传给构造器的参数(("春天","温暖"))
    //3.如果有多个常量(对象),使用逗号间隔即可
    //4.如果使用enum实现枚举。要求定义的常量对象写在最前面
    SPRING("春天","温暖"),Winter("冬天","寒冷"),SUMMER("夏天","炎热"),AUTUMN("秋天","潮湿");
    private String name;
    private String desc;//描述
    private Season2(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
    public String getDesc() {
        return desc;
    }
    public String getName() {
        return name;
    }
    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

5.enum关键字实现枚举-快速入门

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A_SHOWY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值