java学习之枚举二

目录

一、enum关键字实现枚举

二、注意事项

一、对Season2进行反编译(javap)

​编辑

 三、练习题

第一题

第二题


一、enum关键字实现枚举

package enum_;

public class Enumeration03 {
    public static void main(String[] args) {
        System.out.println(Season2.SPRING);
        System.out.println(Season2.AUTUMN);
    }
}
//演示使用enum关键字来实现枚举
enum Season2{

    //定义了四个对象
    //public static final修饰,因为是final修饰,所以必须是大写
//    public static final  Season2 SPRING =  new Season2("春天", "温暖");
//    public static final  Season2 WINTER =  new Season2("冬天", "寒冷");
//    public static final  Season2 SUMMER = new Season2("夏天", "炎热");
//    public static final  Season2 AUTUMN = new Season2("秋天", "凉爽");
    //如果使用了enum关键字来实现枚举
    //1.使用关键字 enum 来替代class
    //2.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 getName() {
        return name;
    }


    public String getDesc() {
        return desc;
    }

    @Override
    public String toString() {
        return "Season2{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

如果使用了 enum 来实现枚举类
1. 使用关键字 enum 替代 class
2. public static final Season SPRING = new Season("春天", "温暖") 直接使用SPRING("春天", "温暖")     解读   常量名(实参列表)
3. 如果有多个常量(对象), 使用 ,号间隔即可
4. 如果使用 enum 来实现枚举, 要求将定义常量对象, 写在前面

二、注意事项

一、对Season2进行反编译(javap)

使用enum关键字开发一个枚举类是,默认会继承Enum类,用javap来证明(反编译)

 1.Season2是一个final类

2.定义的四个对象本质还是public static final修饰的

如果我们使用的是无参构造器, 创建常量对象, 则是常量名(),并且可以省略 ()

package enum_;

public class Enumeration03 {
    public static void main(String[] args) {
        System.out.println(Season2.SPRING);
        System.out.println(Season2.AUTUMN);
    }
}
//演示使用enum关键字来实现枚举
enum Season2{

    //定义了四个对象
    //public static final修饰,因为是final修饰,所以必须是大写
//    public static final  Season2 SPRING =  new Season2("春天", "温暖");
//    public static final  Season2 WINTER =  new Season2("冬天", "寒冷");
//    public static final  Season2 SUMMER = new Season2("夏天", "炎热");
//    public static final  Season2 AUTUMN = new Season2("秋天", "凉爽");
    //如果使用了enum关键字来实现枚举
    //1.使用关键字 enum 来替代class
    //2.SPRING("春天", "温暖");  常量名/对象名(实参列表);
    //3.如果有多个常量(对象),使用逗号间隔即可
    //4.如果使用enum来实现枚举,要求将定义的对象,写在前面
    //5. 如果我们使用的是无参构造器, 创建常量对象, 则可以省略 ()
    SPRING("春天", "温暖"),WINTER("冬天", "寒冷"),
    SUMMER("夏天", "炎热"),AUTUMN("秋天", "凉爽"),
    //WHAT()调用的无参构造器,可以省略()
    //WHAT()的原型是public static final Season2 WHAT = new Season2();
    WHAT;


    //属性要放在枚举的对象的下面
    private String name;
    private String desc;//描述

    private Season2(){//无参构造器

    }
    private Season2(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    public String getName() {
        return name;
    }


    public String getDesc() {
        return desc;
    }

    @Override
    public String toString() {
        return "Season2{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}
 

 三、练习题

第一题

以下代码是否正确?

 答案:正确的,在Gender类中隐藏着无参构造器,BOY和GIRL的完整写法是

public static final Gender BOY = new Gender();
public static final Gender GIRL = new Gender();

如果定义了有参构造器,那么上述代码就是错误的,需要显式的定义无参构造器

第二题

写出以下代码的输出结果

package enum_;



public class EnumExercise01 {
    public static void main(String[] args) {
        Gender boy = Gender.BOY;
        Gender boy2 = Gender.BOY;
        System.out.println(boy);
        System.out.println(boy2);
        boy.hi();
        System.out.println(boy2 == boy);
    }
}
enum Gender{
    BOY,GIRL;

    public void hi(){
        System.out.println(BOY);
    }

}

输出结果

 分析:

package enum_;



public class EnumExercise01 {
    public static void main(String[] args) {
        Gender boy = Gender.BOY;//调用Gender类的对象BOY
        Gender boy2 = Gender.BOY;//再次调用对象BOY
        System.out.println(boy);//调用Gender的父类Enum的toString()方法,返回BOY
        /*
         public String toString() {
            return name;
        }
        */
        System.out.println(boy2);
        boy.hi();
        System.out.println(boy2 == boy);//两者指向同一对象,true
    }
}
enum Gender{
    //1.创建两个Gender类的对象实例,名字分别为BOY何GIRL,没有实参
    //2. public static final Gender BOY = new Gender();
    //3. public static final Gender GIRL = new Gender();
    BOY,GIRL;

    public void hi(){
        System.out.println(BOY);
    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/17305.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python每日一练(20230506) 存在重复元素I、II、III

目录 1. 存在重复元素 Contains Duplicate I 2. 存在重复元素 Contains Duplicate II 3. 存在重复元素 Contains Duplicate III 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 存在重…

【Linux 裸机篇(八)】I.MX6U EPIT 定时器中断、定时器按键消抖

目录 一、EPIT 定时器简介二、定时器按键消抖 一、EPIT 定时器简介 EPIT 的全称是: Enhanced Periodic Interrupt Timer,直译过来就是增强的周期中断定时器,它主要是完成周期性中断定时的。学过 STM32 的话应该知道, STM32 里面的…

电脑系统怎么选?Win?MacOS?Linux?

马上要学编程了,我们要学什么操作系统呢?是MacOS,还是Windows,或者是Linux或者其他!那我们今天就来说说MacOS系统和Windows系统的优缺点,也介绍一下其他的系统。让你心里有底! 1、Windows 首先当…

Neo4j导出和导入数据库

Neo4j 4.x版本和5.x版本的导出导入有区别,这里分开来讲。 1 4.x版本 1.1 准备 导入导出之前要先关闭neo4j服务。 .neo4j stop 1.2 数据导出 进入$NEO4J_HOME%/bin目录执行如下数据库导出命令: neo4j-admin dump --databaseneo4j --toF:/neo4j_bac…

《Netty》从零开始学netty源码(五十四)之PoolThreadLocalCache

PoolThreadLocalCache 前面讲到PoolThreadCache,它为线程提供内存缓存,当线程需要分配内存时可快速从其中获取,在Netty中用PoolThreadLocalCache来管理PoolThreadCache,它的数据结构如下: PoolThreadLocalCache相当…

Unity3D:内置着色器的用途和性能

推荐:将 NSDT场景编辑器 加入你的3D工具链 3D工具集: NSDT简石数字孪生 内置着色器的用途和性能 Unity 中的着色器是通过__材质__来使用的,材质本质上结合了着色器代码与纹理等参数。此处提供了关于着色器/材质关系的深入说明。 当选择材质…

延时队列的三种实现方案

延时队列的三种实现方案 什么是延时队列延时队列的应用场景基于Java DelayQueue的实现源码剖析 基于Redis的zset实现实现步骤Redis延时队列优势Redis延时队列劣势 基于RabbitMQ的延时队列实现TTL DXL(死信队列)插件实现 总结参考文章 什么是延时队列 在分布式系统中&#xff…

Java之多线程初阶2

目录 一.上节内容复习 1.进程和线程的区别 2.创建线程的四种方式 二.多线程的优点的代码展示 1.多线程的优点 2.代码实现 三.Thread类常用的方法 1.Thread类中的构造方法 2.Thread类中的属性 1.为线程命名并获取线程的名字 2.演示isDaemon() 3.演示isAlive() 4.演示…

ChatGPT写文章效果-ChatGPT写文章原创

ChatGPT写作程序:让文案创作更轻松 在当前数字化的时代,营销推广离不开文案创作。然而,写作对许多人来说可能是一项耗时而枯燥的任务。如果您曾经为写出较高质量的文案而苦恼过,那么ChatGPT写作程序正是为您而设计的。 ChatGPT是…

Python 模块

目录 1.模块导入语言 1.1 import 语句 1.2 from…import 语句​编辑 2. 搜索路径 3.命名空间和作用域 4.globals() 和 locals() 函数 5.reload() 函数 6.Python中的包 7.自定义模块及其调用 7.1 创建模块及__init__.py初始化文件 7.2 __init__.py的参数__all__ …

【vite+vue3.2 项目性能优化实战】打包体积分析插件rollup-plugin-visualizer视图分析

rollup-plugin-visualizer是一个用于Rollup构建工具的插件,它可以生成可视化的构建报告,帮助开发者更好地了解构建过程中的文件大小、依赖关系等信息。 使用rollup-plugin-visualizer插件,可以在构建完成后生成一个交互式的HTML报告&#xf…

从血缘进化论的角度,破解婆媳关系的世纪难题

从血缘进化论的角度,破解婆媳关系的世纪难题 有个粉丝的留言,很长很复杂,是关于他们家的婆媳关系问题。 青木老师,您好,我也有一些问题想咨询您,是关于婆媳关系的,字数有些多,分开…

【ElasticSearch】EQL操作相关

文章目录 EQL操作基础语法数据准备数据窗口搜索统计符合条件的事件事件序列 安全检测数据准备查看数据导入情况获取 regsvr32 事件的计数检查命令行参数检查恶意脚本加载检查攻击成功可能性 EQL操作 EQL 的全名是 Event Query Language (EQL)。事件查询语言(EQL&…

【问题记录】flask开发blog

文章目录 小知识点问题1. 文章标签显示错误2. 文章状态无法回显(open)3. 用户管理页面,图标无法显示4. BuildError5. 用户管理添加用户,使用重复的用户名会报错(open)6. 添加用户,不上传头像会报错(open)7. 部分标签删除时报错&am…

JAVA springboot创业实践学分管理系统idea开发mysql数据库web结构计算机java编程MVC

一、源码特点 idea springboot创业实践学分管理系统是一套完善的web设计系统mysql数据库MVC模式开发,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式 开发。 JAVA springboot创业实践学分管理系统ide…

Ubuntu搜狗输入法安装指南

Ubuntu搜狗输入法安装指南 Ubuntu搜狗输入法安装指南搜狗输入法已支持Ubuntu1604、1804、1910、2004、2010Ubuntu20.04及以上安装搜狗输入法步骤 Ubuntu搜狗输入法安装指南 下载地址:https://shurufa.sogou.com/ 计算为amd64的选择x86_64,以下教程来源…

2023Java商城毕业设计(附源码和数据库文件下载链接)Spring Boot + mysql + maven + mybatis-plus

2023Java商城毕业设计Spring Boot mysql maven mybatis-plus 用户注册用户登录修改密码商品列表(分类模糊查询)个人信息用户信息修改订单信息添加至购物车商品列表商铺详情商品详情商铺列表 资源目录如下:(源码sql文件&#xf…

Linux入门2(常用命令)

Linux入门2 Linux常用命令快捷键基础命令文件查看命令文件编辑命令进程管理命令用户管理命令 Linux常用命令 快捷键 Ctrl Alt T打开终端 Ctrl shift 加号 终端字体放大 ctrl 减号 终端字体缩小 基础命令 sudo su 进入管理员目录 exit 返回到用户目录 ls 当前目录下的文…

Illustrator如何使用基础功能?

文章目录 0.引言1.菜单栏2.工具箱 0.引言 因科研等多场景需要进行绘图处理,笔者对Illustrator进行了学习,本文通过《Illustrator CC2018基础与实战》及其配套素材结合网上相关资料进行学习笔记总结,本文对软件界面基本功能进行阐述。    1…

K8s 安全是云安全的未来

导语 到 2025 年,保护 Kubernetes (K8s) 将被认为是云安全最重要的方面。 在最成功的组织中,CTO 和 CISO 已经意识到 Kubernetes 安全的重要性。 但是,虽然 Kubernetes 已经占 CTO 云支出的很大一部分,但 CISO 仍然有所落后。 大…
最新文章