P424枚举的引出——P435注释

P424枚举的引出

P424枚举

image-20220109211643407.png

package emun;
​
public class Enumeration {
    public static void main(String[] args) {
        System.out.println(Season.SPRING);
    }
}
class Season{
    private String name;
    private String desc;
    //1.将构造器私有化,防止直接new
    //2.去掉set方法防止被修改
    //3.直接在season内部创建固定的对象
    //4.优化可以加入final优化
    public static final Season SPRING=new Season("Chun","温暖");
    public static final Season SUMMER=new Season("夏","热呀");
    private Season(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

image-20220109212538871

package emun;
//演示直接使用enum关键字
public class Enumeration {
    public static void main(String[] args) {
        System.out.println(Season2.SPRING);
    }
}
enum  Season2{//1.使用关键字来替代class
    //2.直接使用SPRING("春天",“温暖”);常量名(实参列表)
    //3.如果有多个对象,使用逗号间隔即可
    //4.如果使用emum来实现枚举,要求将定义常量的对象放在前面
    SPRING("春天","wwnuan"),SUMMER("夏天","re");//这句话在前面
​
    private String name;
    private String desc;
​
    private Season2(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
    @Override
    public String toString() {
        return "Season2{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

P427enum关键字细节

image-20220109213735992

 SPRING("春天","wwnuan"),SUMMER;//这句话在前面
​
    private String name;
    private String desc;
​
    Season2() {//无参构造器
    }
​
    private Season2(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
    //SUMMER使用无参构造器,创建常量对象SUMMER,可以省略()

image-20220109220923093

enum的toString()返回的是name

P429java的enum成员方法

image-20220109221512454

package emun;
​
public class EnumMethod {
    public static void main(String[] args) {
        Season2 sum=Season2.SUMMER;
        Season2 spring=Season2.SPRING;
        System.out.println(sum.name());//输出枚举对象的名称
        System.out.println(sum.ordinal());//输出该枚举对象的次序,从0开始
        System.out.println(Season2.SPRING.ordinal());
        Season2.values();//Valus,返回Season2[],含定义的所有枚举对象
        Season2[] values=Season2.values();
        for(Season2 season:values){//增强for,每次将values中的元素传给一个season
            System.out.println(season);
            //输出结果Season2{name='春天', desc='wwnuan'}
            //Season2{name='null', desc='null'}
        }
        //valueof:将字符串转成枚举对象,要求字符串必须为已有的常量名否则报错
        //执行流程:根据你输入的“SPRING”到Season的枚举对象去查找,如果找到了就返回,如果没有找到就报错
        Season2 spring11=Season2.valueOf("SPRING");
        System.out.println("spring11="+spring11);
        System.out.println(spring==spring11);//输出true
        //compareTo:比较枚举敞亮,比较的就是编号
        System.out.println(Season2.SPRING.compareTo(Season2.SUMMER));//输出-1
        //源码显示是self.ordinal-other.ordinal=0-1=-1
        /*
        int []nums={1,2,3};
        for(int i:nums){//等同于(int i=0;i<nums.length;i++)
            System.out.println("i="+i);
        }
        */
    }
}
​

P431-P435

不是很重要,看清源码即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值