【JAVA学习笔记】43 - 枚举类

项目代码

https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter11/src/com/yinhai/enum_

〇、创建时自动填入版权 作者等信息

 如何在每个文件创建的时候打入自己的信息以及版权呢

菜单栏-File-setting-Editor-File and Code Templaters -Includes-输入信息 如下图

一、引出

要求创建季节(Season)对象,请设计并完成

/*** @author 银海* @version 1.0*/
public class Enumeration01 {public static void main(String[] args) {Season season = new Season("spring", "worm");Season season1 = new Season("winter", "cold");Season season2 = new Season("summer", "hot");Season season3 = new Season("autumn", "cold");//对于季节而言,是固定的四个 不会有更多//因此这样设计不好,所以引出枚举类,把对象一个个列举出来Season other = new Season("asdasdas", "~~~~~~~~~");}
}
class Season{private String name;private String desc;public Season(String name, String desc) {this.name = name;this.desc = desc;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}
}

二、两种实现方式

1.自定义类实现枚举

        1)不需要提供setXxx方法,因为枚举对象值通常为只读.

        2)对枚举对象/属性使用final + static 共同修饰,实现底层优化.

        3)枚举对象名通常使用全部大写,常量的命名规范

        4)枚举对象根据需要,也可以有多个属性

public class Enumeration02 {public static void main(String[] args) {System.out.println(Season.AUTUMN);System.out.println(Season.SPRING);System.out.println(Season.SUMMER);System.out.println(Season.WINTER);}
}class Season {private String name;private String desc;//3.在Season内部直接创建对象,加上public static//4.优化可以加入final修饰符public final static Season SPRING = new Season("春天", "暖");public final static Season WINTER = new Season("冬天", "寒冷");public final static Season AUTUMN = new Season("秋天", "冷");public final static Season SUMMER = new Season("夏天", "热");//1.私有化构造器public Season(String name, String desc) {this.name = name;this.desc = desc;}//2.去掉set方法 防止被修改public String getName() {return name;}public String getDesc() {return desc;}}

小结:进行自定义类实现枚举有如下特点

        1)构造器私有化

        2)本类内部创建一组对象

        3)对外暴露对象(通过为对象添加public final static修饰符)

        4)可以提供get方法,但是不要提供set

2.enum关键字实现枚举(引出)

public class Enumeration03 {public static void main(String[] args) {System.out.println(Season.AUTUMN);System.out.println(Season.SPRING);System.out.println(Season.SUMMER);System.out.println(Season.WINTER);}}
enum Season {//1.使用enum代替class//2.//常量名(实参列表);//3.如果有多个常量(对象)SPRING("春天", "暖"),WINTER("冬天", "寒冷"),AUTUMN("秋天", "冷"),SUMMER("夏天", "热");//等价于自定义的public final static Season SPRING = new Season("春天", "暖");//4.如果使用enum来实现枚举,要求将常量对象写在前面private String name;private String desc;private Season(String name, String desc) {this.name = name;this.desc = desc;}public String getName() {return name;}public String getDesc() {return desc;}}

三、enum实现枚举注意事项和细节

1.当我们使用enum关键宇开发一个枚举类时, 默认会继承Enum类

        使用javap反编译

                

        如何使用javap反编译呢,定位class文件,使用cmd,输入javap 想要反编译的文件.class

2.调用的构造器

        传统的public static final Season2 SPRING = new Season2("春天","温暖"); 简化成SPRING("春天","温暖"),这里必须知道,它调用的是哪个构造器,注意得是private

3.如果使用无参构造器创建枚举对象,则实参列表和小括号都可以省略

4.当有多个枚举对象时,使用,逗号 间隔最后用一个分号结尾

5.枚举对象必须放在枚举类的行首.
 

四、课堂练习

                

正确 调用的是Gender 的无参构造器,没有写构造器也隐含在类内

        ​​​​​​​        

会继承父类Enum,本类是没有toString的所以要找父类有没有toString

        ​​​​​​​        ​​​​​​​

有,名字就是BOY(有个疑问,开一章节再看看),输出true

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

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

相关文章

自动化测试07Selenium01

目录 什么是自动化测试 Selenium介绍 Selenium是什么 Selenium特点 工作原理 SeleniumJava环境搭建 Selenium常用的API使用 定位元素findElement CSS选择语法 id选择器:#id 类选择 .class 标签选择器 标签名 后代选择器 父级选择器 自己选择器 xpath …

2.1 向量与线性方程组

一、行图像与列图像 线性代数的中心问题是求解线性方程组。线性的意思是这些方程的未知数是一次的,即每个未知数只会乘数字,而不会出现 x x x 与 y y y 相乘的项。下面是一个由两个未知数组成的方程组: 两个方程 两个未知数 { x − 2 y 1…

关于QTableWidget的it所占内存的释放问题

说起QTableWidget,我们一般都是用QTableWidget进行数据显示或者使用QTableWidget其他控件组合进行设置。 这里主要说说数据展示,我们在进行数据展示时,数据量分为两种有限和无限。不管是QTableWidget中插入的数据有限还是数据无限。在数据多时…

【从0到1设计一个网关】什么是网关?以及为什么需要自研网关?

文章目录 什么是网关?网关类型网关的优缺点目前的网关解决方案有哪些?为什么要自研Gateway网关?自研网关需要注意什么? 注: 这篇文章作为我的网关的第一篇文章,并不涉及任何代码,只是提及了网关…

LeetCode 155. 掷骰子等于目标和的方法数:动态规划

【LetMeFly】1155.掷骰子等于目标和的方法数:动态规划 力扣题目链接:https://leetcode.cn/problems/number-of-dice-rolls-with-target-sum/ 这里有 n 个一样的骰子,每个骰子上都有 k 个面,分别标号为 1 到 k 。 给定三个整数 …

如何在国际腾讯云服务器上设置IP节点的密码?

跟着云计算技术的发展,越来越多的企业和个人开始运用云服务器来存储和处理数据。腾讯云服务器是一款非常受欢迎的云服务器产品,它提供了高效稳定的计算能力。在运用腾讯云服务器的过程中,咱们可能需求设置IP节点的暗码,以便维护咱…

杂谈:DC对Verilog和SystemVerilog语言的支持

DC对Verilog和SystemVerilog语言的支持 设计语言用哪种?Design Compiler对二者的支持简单的fsm电路测试测试结果对比写在最后 设计语言用哪种? 直接抛出结论:先有电路,后为描述。设计端而言,没有语言的高低好坏&#…

Gin vs Beego: Golang的Web框架之争

前言 Golang作为一门高效且简洁的语言,已经在Web开发领域得到了广泛的应用。Gin和Beego是Golang中两个著名的Web框架,它们都提供了一系列强大的功能,帮助开发者构建高性能的Web应用。本文将对Gin和Beego进行全面的对比,帮助开发者…

SQL SERVER连接oracle数据库几种方法

--1 方式 --查询oracle数据库中的表 SELECT * FROM OPENDATASOURCE( MSDAORA, Data SourceGE160;User IDDAIMIN;PasswordDAIMIN )..DAIMIN.JOBS 举一反三:在查询分析器中输入: SELECT * FROM OPENDATASOURCE( MSDAORA, Data SourceORCL;User…

vite.config.js文件配置代理设置VITE_APP_BASE_API

.env.development文件 ENV development # base api VITE_APP_BASE_API /dev-api.env.production文件 ENV production # base api VITE_APP_BASE_API /apidefine: {process.env: {VITE_APP_BASE_API: https://xxx.com}},server: {hmr: true, // vue3 vite配置热更新不用手动…

妙手ERP功能更新丨Shopee全球产品支持使用定价模板修改价格、Ozon新增SKU模板 、Temu采集箱支持添加货源链接......

为了给卖家朋友带来更好的使用体验,更高效地运营跨境店铺,妙手ERP在近两周优化了以下多项功能。 01、平台授权模块 TikTok - 支持授权美国跨境店及ACCU店铺,TikTok平台各功能均可使用 02、产品模块优化 全平台 - 支持产品重量单位切换 Sho…

Java架构师内功数据库

目录 1 导学2 数据库基本概念2.1 数据库系统2.2 三级模式-两级映像2.3 数据库设计2.4 数据模型2.4.1 E-R模型2.4.2 关系模型2.5 关系代数3 规范化和并发控制3.1 函数依赖3.2 键与约束3.3 范式3.3.1 第一范式1NF3.3.2 第二范式3.3.3 第三范式3.4 模式分解3.5 并发控制3.6 封锁协…

centos搭建elastic集群

1、环境可以在同一台集群上搭建elastic,也可以在三台机器上搭建,这次演示的是在同一台机器搭建机器。 2、下载elastic :https://www.elastic.co/cn/downloads/past-releases#elasticsearch 2、​​​​​​ tar -zxvf elasticsearch-xxx-版…

KNN(K近邻)水仙花的分类(含答案)

题目 以下采用K-NN算法来解决水仙花的分类问题,每个样本有两个特征,第一个为水仙花的花萼长度,第二个为水仙花 的花萼宽度,具体数据见表, 1)设置k3, 采用欧式距离,分析分类精度为多少…

vue如何使用冻结对象提升代码效率及其原理解析

先给大家伙整个实际工作中一定会碰到的问题 如下vue dome ,它的代码非常简单功能也1非常简单,就是一个按钮,点击后会显示有多少条数据 来看看源码, html部分就是一个按钮绑定了一个loadData事件,然后在p标签内展示了这个myData这个数据的长度 <template><div id&quo…

详解如何快速查询Node.js版本信息(六种方法)

Node.js是一款基于Chrome V8引擎的快速、轻量级的JavaScript运行时。随着应用程序规模越来越庞大&#xff0c;Node.js版本的更新也日益频繁。这篇文章旨在帮助开发者们快速查询Node.js版本信息。 一、使用node命令查询版本信息 node命令提供了一个参数-v&#xff0c;可以在控…

电解电容寿命与哪些因素有关?

电解电容在各类电源及电子产品中是不可替代的元器件&#xff0c;这些电子产品中由于应用环境的原因&#xff0c;使它成为最脆弱的一环&#xff0c;所以&#xff0c;电解电容的寿命也直接影响了电子产品的使用寿命。 一、电解电容失效模式与因素概述 铝电解电容器正极、负极引出…

DSI及DPHY的学习

DSI的物理层PHY只能是DPHY 本节讲述的DSI是V1.02.00---2010.6.28 从DSI V1.02开始DSI支持图像数据包RGB和YCbCr的传输&#xff0c;在此版本之前只支持RGB传输。 本节内容与CSICDPHY相同时 请参考&#xff1a; CSI2与CDPHY学习-CSDN博客 同时本节会做一些与CSICDPHY的比较 …

proteus中仿真arduino的水位测试传感器

一、原理介绍 我们这里使用的水位传感器&#xff0c;只能说是一个小实验用途的水位传感器。我们首先上图 如上图所示&#xff0c;线没有连接&#xff0c;传感器由许5对裸露在外的铜线片作为传感部分&#xff0c;当浸入水中时这些铜线片会被水桥接。 这些被水连接起来的铜线&a…

最新Tuxera NTFS2023最新版Mac读写NTFS磁盘工具 更新详情介绍

Tuxera NTFS for Mac是一款Mac系统NTFS磁盘读写软件。在系统默认状态下&#xff0c;MacOSX只能实现对NTFS的读取功能&#xff0c;Tuxera NTFS可以帮助MacOS 系统的电脑顺利实现对NTFS分区的读/写功能。Tuxera NTFS 2023完美兼容最新版本的MacOS 11 Big Sur&#xff0c;在M1芯片…