java学习之枚举二

news2025/1/11 0:38:28

目录

一、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.coloradmin.cn/o/475924.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

el-upload组件的文件回显功能和添加文件到elupload组件

省流: 先获取这个文件对象,使用handleStart方法添加到组件。 this.$refs.uploadRefName.handleStart(rawfile); 在开发的时候遇到表单里需要上传图片的功能。看了下el-upload组件的使用方法,在修改表单的时候,el-upload组件的回显…

flutter学习之旅(二)

如果不知道怎么安装编写可以查看这篇 创建项目 另一个创建方法 flutter create 项目名热部署 vscode 热部署 vscode很简单:可以通过Debug进行调试 使用flutter查看设备 flutter devices如图所见我现在用的是windows所以,我们检测不到ios因为 我们看…

【Fluent】边界类型总结,什么时候用壁面对(wall-shadow pair)、什么时候用interface?

一、fluent自动生成边界类型的规律 Enclosure是包裹在外面的气体(流体),mold是模具(固体),sheet是模具上的薄板件(固体)。 1.1 正向思维 不管是流体域还是固体域,每一…

高度可定制可用于商用目的全流程供应链系统(全部源码)

一、开源项目简介 高度可定制零售供应链中台基础系统,集成零售管理, 电子商务, 供应链管理, 财务管理, 车队管理, 仓库管理, 人员管理, 产品管理, 订单管理, 会员管理, 连锁店管理, 加盟管理, 前端React/Ant Design, 后端Java Spring自有开源框架,全面支…

软件测试之黑盒测试的具体方法详解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一.基于需求的设计方法二.等价类三.边界值四.判定表4.1 **关系**4.2 如何设计测试用例4.3 实际案例第一步第二步第三步第四步 五.正交排列5.1 什么是正交表5.2 …

shell脚本的判断式

文章目录 shell脚本的判断式利用test命令的测试功能关于某个文件名的【文件类型】判断关于文件的权限检测两个文件之间的比较关于两个整数之间的比较判定字符串的数据多重条件判定例题 利用判断符号[ ]例题 shell脚本的默认变量($0、$1...)例题shift:造成参数变量号…

Linux安装Mysql操作步骤详解

目录 1. 检测当前系统中是否安装了MySql数据库 2. 使用FinalShell自带的上传工具将jdk的二进制发布包上传到Linux 3. 解压并解包到/usr/local/mysql(便于区分) 第一步:将包先移动到该目录下 第二步:解压解包 第三步&#xff1a…

LeetCode 105.106. 从前序|后序与中序遍历序列构造二叉树 | C++语言版

LeetCode 105. 从前序与中序遍历序列构造二叉树 | C语言版 LeetCode 105. 从前序与中序遍历序列构造二叉树题目描述解题思路思路一:使用递归代码实现运行结果参考文章: 思路二:减少遍历节点数代码实现运行结果参考文章: LeetCode …

C语言复习笔记1

1.不同数据类型所占字节数。 bit 01二进制的比特位 byte 字节 8 bit 比特 之后的单位都是以1024为倍数 #include<stdio.h> #include<unistd.h>int main() {printf("sizeof(char)%d\n",sizeof(char));printf("sizeof(short)%d\n",sizeof(sh…

JavaScript 笔记

1 简介 JavaScript 诞生于1995年&#xff0c;是由网景公司发明&#xff0c;起初命名为LiveScript&#xff0c;后来由于SUN公司的介入&#xff0c;更名为 JavaScript。1996年微软在其最新的IE3浏览器中引入了自己对JavaScript的实现JScript&#xff0c;于是市面上就存在两个版本…

Mybatis 框架 ( 三 ) Mybatis-Plus

4.Mybatis-plus 官网 : https://www.baomidou.com/ MyBatis-Plus 是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上封装了大量常规操作&#xff0c;减少了SQL的编写量。 4.1.Maven依赖 使用时通常通过Springboot框架整合使用 并且使用Lombok框架简化实体类 <…

软件测试——基础篇(软件测试的生命周期和BUG的概念)

目录 一、软件测试生命周期 1. 软件生命周期 2. 软件测试生命周期 二、BUG 1. 如何描述一个BUG 2. BUG的级别 3. BUG的生命周期 一、软件测试生命周期 1. 软件生命周期 软件生命周期&#xff1a;需求分析&#xff0c;计划&#xff0c;设计&#xff0c;编码&#xff0c;…

20 printf 的调试

前言 在最开始的 cmd 编程中, 我们会使用到的最常见的输出, 包括一些时候调试的时候 我们最常使用到的函数 那肯定是 printf 了 我们这里来调试一下 这个 printf 还有一个原因是 之前在调试 malloc 的时候, malloc 虚拟内存分配的调试(1) 可以发现, 不仅仅是在 malloc 的时…

Codeforces Round 865 (Div. 2)

6 problems. ABC过, DE没想出来, F没看. https://codeforces.com/contest/1816 A. Ian Visits Mary 分析 - AC 每次跳跃&#xff0c;横纵互质。 限于数据量&#xff0c;不能枚举。 1与任何数互质。考虑从(0,0)跳到(1,y)&#xff0c;这一步一定合法&#xff1b;再从(1,y)跳到…

Netty小白入门教程

一、概述 1.1 概念 Netty是一个异步的基于事件驱动(即多路复用技术)的网络应用框架&#xff0c;用于快速开发可维护、高性能的网络服务器和客户端。 1.2 地位 Netty在Java网络应用框架中的地位就好比&#xff0c;Spring框架在JavaEE开发中的地位。 以下的框架都使用了Nett…

C++017-C++文件读写应用

文章目录 C017-C文件读写应用C文件读写应用CSP-J目标1. 文件的基本概念、文本文件的基本操作关闭文件 文件操作-写入文本文件2.文件读写操作基本案例seekg() 和 tellg() 函数来读取文件中的数据 2. 文本文件类型与二进制文件类型3. 文件重定向、文件读写等操作 在练习&#xff…

56.网页设计规则#4_图标

使用好的图标 使用一个好的图标包&#xff0c;有大量的免费和付费图标包 图标工具推荐&#xff1a; ● Phosphor icons ● ionicons ● ICONS8 只使用一个图标包。不要混合不同图标包中的图标 使用SVG图标或图标字体。不要使用位图图像格式(.jpg and .png)! 调整网站个性!圆…

Android 中的跨进程数据块传递

Android 的 Binder 进程间通信机制主要用于实现远程过程调用 RPC&#xff0c;Android 系统中进程之间的大块数据传递&#xff0c;如音频数据&#xff0c;出于效率等原因&#xff0c;一般不直接用 Binder 机制。Binder 库提供了基于共享内存外加 Binder 机制的跨进程文件描述符传…

每月一书(202304)《RxJava2.x实战》

[TOC] 又到了每月一书的时间&#xff0c;本月阅读的是技术相关书籍《RxJava2.x实战》&#xff0c;下面分享一下我阅读完后的体会。 主要内容 本书主要介绍了RxJava这个框架&#xff0c;框架版本是2.x。主要内容包含三大部分&#xff1a; 框架的原理和使用方法框架中各类操…

git alias

git alias 其实之前就用过一些 alias&#xff0c;比如说 git reflog show 就是 git log -g --abbrev-commit --prettyoneline 的 alias&#xff0c;一般 alias 可以存储到 git 的 config 文件&#xff0c;repo 等级的在 .git 下&#xff0c;global 的一般在 ~/.gitconfig 或者…