Java 枚举(Enum)使用

article/2025/9/27 11:04:25

文章目录

        • 枚举引入
        • enum关键字实现枚举
        • enum关键字实现枚举注意事项
        • enum常用方法一览表
        • enum课堂练习
        • enum实现接口

枚举引入

创建Season类, 实例化春夏秋冬四个实例

Season对象有如下特点
1.季节的值是有限的几个值(spring, summer, autumn, winter)
2.只读,不需要修改。

解决方案就是咱们即将提出的枚举

1)枚举对应英文(enumeration, 简写enum)
2)枚举是一组常量的集合。
3)可以这里理解:枚举属于一种特殊的类,里面只包含一组有限的特定的对象。

public class Enumeration {public static void main(String[] args) {System.out.println(Season.AUTUMN);}
}// 演示定义枚举类
class Season {// 1 构造器私有化防止直接new// 2 只保留get,去掉set,防止属性被修改// 3 在Season内部直接创建固定的对象// 4 还可以再优化,使用static对象会使Season类加载,所以再加个finalprivate String name;private String desc;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("夏天", "炎热");private Season(String name, String desc) {this.name = name;this.desc = desc;}public String getName() {return name;}public String getDesc() {return desc;}@Overridepublic String toString() {return "Season{" +"name='" + name + '\'' +", desc='" + desc + '\'' +'}';}
}

1.不需要提供setXxx方法,因为枚举对象值通常为只读.
2.对枚举对象/属性使用final + static共同修饰,实现底层优化.
3.枚举对象名通常使用全部大写,常量的命名规范.
4.枚举对象根据需要,也可以有多个属性

enum关键字实现枚举

使用enum来实现前面的枚举案例,看老师演示,主要体会和自定义类实现枚举不同的地方。

package src.enum_;public class Enumeration01 {public static void main(String[] args) {System.out.println(Season.AUTUMN);}
}// 演示定义枚举类
enum Season1 {// 如果使用了enum来定义枚举类// 1 使用关键字enum来替代class// 2 常量名(实参列表)// 3 如果有多个常量对象,使用`,`间隔即可// 4 如果使用enum,要求常量对象放在类最前面SPRING("春天", "温暖"),SUMMER("夏天", "炎热"),AUTUMN("秋天", "凉爽"),WINTER("冬天", "寒冷");private String name;private String desc;private Season1(String name, String desc) {this.name = name;this.desc = desc;}public String getName() {return name;}public String getDesc() {return desc;}@Overridepublic String toString() {return "Season{" +"name='" + name + '\'' +", desc='" + desc + '\'' +'}';}
}

enum关键字实现枚举注意事项

1.当我们使用enum关键字开发一个枚举类时,默认会继承Enum类[如何证明]

image-20221117161958460

2.传统的public static final Season2 SPRING = new Season2(“春天”, “温暖”); 简化成SPRING(“春天”,“温暖”),这里必须知道,它调用的是哪个构造器.
3.如果使用无参构造器创建枚举对象,则实参列表和小括号都可以省略

image-20221117162304457

4.当有多个枚举对象时,使用,间隔,最后有一个分号;结尾
5.枚举对象必须放在枚举类的行首.

image-20221117162800643 image-20221117163000614

enum常用方法一览表

image-20221117170746055

  1. toString:Enum类已经重写过了,返回的是当前对象名子类可以重写该方法,用于返回对象的属性信息

  2. name:返回当前对象名(常量名) ,子类中不能重写

  3. ordinal:返回当前对象的位置号,默认从0开始

  4. values: 返回当前枚举类中所有的常量

  5. valueOf:将字符串转换成枚举对象,要求字符串必须为已有的常量名,否则报异常!

  6. compareTo:比较两个枚举常量,比较的就是编号!

enum课堂练习

1)声明Week枚举类,其中包含星期一至星期日的定义; MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
2)使用values返回所有的枚举数组,并遍历,输出下图效果
image-20221117172150056

public class Enumerate02 {public static void main(String[] args) {Week[] weeks = Week.values();for (Week week : weeks) {System.out.println(week);}}
}enum Week {MONDAY("星期一"),TUESDAY("星期二"),WEDNESDAY("星期三"),THURSDAY("星期四"),FRIDAY("星期五"),SATURDAY("星期六"),SUNDAY("星期日");private String name;private Week(String name) {this.name = name;}@Overridepublic String toString() {return name;}
}

enum实现接口

1)使用enum关键字后,就不能再继承其它类了,因为enum会隐式继承Enum, 而Java是单继承机制。
2)枚举类和普通类一样,可以实现接口,如下形式。

enum 类名 implements 接口1,接口2{}

http://chatgpt.dhexx.cn/article/wgkbiFFd.shtml

相关文章

Java枚举详解

目录 Java枚举详解 基本介绍 1.自定义类实现枚举 2.使用enum关键字实现枚举 使用enum关键字实现枚举的注意事项 enum的常用方法 enum的使用细节 Java枚举详解 基本介绍 枚举对应英文(enumeration,简写 enum) 枚举是一组常量的集合 枚举属于一种特殊的类,里…

Java枚举(enum)

枚举是一个被命名的整型常数的集合,用于声明一组带标识符的常数。枚举在曰常生活中很常见,例如一个人的性别只能是“男”或者“女”,一周的星期只能是 7 天中的一个等。类似这种当一个变量有几种固定可能的取值时,就可以将它定义为…

如何使用pFuzz以多种方法验证Web应用程序防火墙的安全性

关于pFuzz pFuzz是一款功能强大的Web应用程序防火墙安全检测/绕过工具,可以帮助广大研究人员同时通过多种方式绕过目标Web应用程序防火墙,以测试WAF的安全性。 pFuzz本质上是一款高级红队模糊测试工具,主要用于研究目的。pFuzz基于Python编…

jieba java_【NLP】【一】中文分词之jieba

声明:本文参考jieba官方文档而成,官方链接:https://github.com/fxsjy/jieba 【一】jieba安装 pip install jieba 【二】jieba简介 简介可见jieba官方说明:https://pypi.org/project/jieba/ 总而言之,jieba用于中文分词…

jieba 分词

一.介绍: jieba: “结巴”中文分词:做最好的 Python 中文分词组件 “Jieba” (Chinese for “to stutter”) Chinese text segmentation: built to be the best Python Chinese word segmentation module. 完整文档见 : GitHub: https://github.com…

jieba学习

Jieba jieba的安装主要功能1.主要有三种模式:2. 加载词典3.词性标注4.关键词提取5.Tokenize:返回词语在原文的起止位置 jieba的安装 先在 [http://pypi.python.org/pypi/jieba/]下载 ,解压后运行 python setup.py install 或者pin install j…

jieba 结巴分词详解

🔗 运行环境:python3🚩 作者:K同学啊🥇 精选专栏:《深度学习100例》🔥 推荐专栏:《新手入门深度学习》📚 极品专栏:《Matplotlib教程》📔 选自专栏…

NLP基本工具之jieba详解

jieba的作用只有分词吗? 简介 jieba(结巴)是百度工程师Sun Junyi开发的一个开源库,在GitHub上很受欢迎,使用频率也很高。 GitHub链接:https://github.com/fxsjy/jieba jieba最流行的应用是分词&#xff0…

jieba分词的最详细解读

目录 一,什么是jieba(结巴)库? 二,jieba库的使用规则 三,jieba库具体使用和实例 一,什么是jieba(结巴)库? 字如其名,结巴库主要用于中文分词&…

python中jieba库使用教程

jieba是python的一个中文分词库,下面介绍它的使用方法。 安装 方式1: pip install jieba方式2: 先下载 http://pypi.python.org/pypi/jieba/ 然后解压,运行 python setup.py install 功能 下面介绍下jieba的主要功能&#xff…

基于python中jieba包的详细使用介绍

一,jieba的介绍 jieba 是目前表现较为不错的 Python 中文分词组件,它主要有以下特性: 支持四种分词模式: 精确模式全模式搜索引擎模式paddle模式 支持繁体分词 支持自定义词典 MIT 授权协议 二,安装和使用 1&am…

CRC校验码的计算

循环冗余检验的原理: 在发送端,先把数据划分为组,假定每组k个比特,假定一个待传送的数据M(k位),CRC运算就是在数据M的后面添加供差错检测用的n位冗余码,然后构成一个帧发送出去&…

CRC校验简单记录

先聊聊奇偶校验 所谓通讯过程的校验是指在通讯数据后加上一些附加信息,通过这些附加信息来判断接收到的数据是否和发送出的数据相同。校验得通信双方都有才行,接收方收到数据后进行计算得到一个校验值,与发送方发的校验值比较,如果…

CRC校验总结

事实上网上很多CRC校验算法,在接收端进行CRC校验时,余数不为零。这往往是因为CRC校验算法本身是有问题的,但不妨碍我们进行校验。接收端可以对需要校验的字段带入CRC校验算法,计算得到校验值,并与发送数据中的校验值进…

CRC校验码计算,以常用CRC-8为例

CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。 CRC校验原理:在要发送的帧后面附加一个数,生成一个新帧发送给接收端。它要使所生成的新帧能与发送端和接收端共同…

CRC校验码举例

CRC校验码举例 一、首先复习一下异或运算(XOR),相同得0,相异得1. 二、多项式算数 使用多项式算数是为了是为了在进行二进制计算时无需考虑进位问题。 CRC中用到的除数正是由多项式的各项系数组成。 比如1,CRC除数为10111。 三、…

CRC校验查表法原理及实现(CRC-16)

绪论 在网上浏览了很多关于CRC校验的文章,基本上都是针对CRC校验原理的阐述以及关于CRC校验查表法的实际应用以及具体软件实现方法。 至于查的表是怎么来的,软件为什么要这样实现很多文章并没有说明。本篇文章就针对这两点问题进行总结和归纳&#xff0…

CRC校验原理

线性分组码中有一种重要的码称为循环码(Cyclic code),这种码编码和解码都不太复杂,而且检(纠)错能力较强。循环码除了具有线性分组码的一般性质外,还具有循环性。循环性是指任一码组循环一位以后…

CRC码计算及校验原理计算

如何根据多项式计算 循环CRC码 5.3.2 循环冗余校验检错方案 奇偶校验码(PCC)只能校验一位错误,本节所要介绍的循环冗余校验码(CRC)的检错能力更强,可以检出多位错误。 1. CRC校验原理 CRC校验原理看…

CRC码计算及校验原理的最通俗诠释

在上一篇发布了我的最新著作《深入理解计算机网络》一书的原始目录(http://blog.csdn.net/lycb_gz/article/details/8199839),得到了许多读者朋友的高度关注和肯定,本篇接着发一篇关于CRC码校验原理和CRC码计算方面的通俗诠释的试…