Java枚举详解

article/2025/9/27 11:07:53

目录

Java枚举详解

基本介绍

1.自定义类实现枚举

2.使用enum关键字实现枚举

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

enum的常用方法

enum的使用细节


Java枚举详解

基本介绍

  • 枚举对应英文(enumeration,简写 enum)

  • 枚举是一组常量的集合

  • 枚举属于一种特殊的类,里面只包含一组有限的特定的对象

  • 不需要提供 setXxxx() 方法,因为枚举对象值通常为只读

  • 对枚举对象/属性使用 static+final 共同修饰

static+final 只有修饰基本数据类型、String类型才不会加载类,修饰对象或者方法还是会加载类

final 修饰对象(引用)只是保证引用的指向不变,但不能保证对象本身不变

  • 枚举对象名通常使用全部大写,与常量的命名规范一样

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

1.自定义类实现枚举

  • 将构造器私有化,目的是防止被new出对象

  • 去掉 setXxxx() 方法,防止属性被修改

  • 在Season内部,直接创建固定对象

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

public class Demo03 {public static void main(String[] args) {System.out.println(Season.AUTUMN);System.out.println(Season.SUMMER);}
}
class Season{private String name;private String desc;//定义了四个对象//加final是为了使引用不能被修改public static final Season SPRING = new Season("春天", "温暖");public static final Season WINTER = new Season("冬天", "寒冷");public static final Season SUMMER = new Season("夏天", "炎热");public static final Season AUTUMN = 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 + '\'' +'}';}
}

2.使用enum关键字实现枚举

  • 使用 enum 关键字代替 class

  • 常量对象名(实参列表)

  • public static final Season2 SPRING = new Season2("春天", "温暖"); 等价于 SPRING("春天", "温暖");

  • 如果有多个对象,需要使用 间隔

  • 如果使用 enum 关键字来实现枚举,要求将定义的常量对象写在最前面

public class Demo04 {public static void main(String[] args) {System.out.println(Season2.SPRING);System.out.println(Season2.SUMMER);}
}
enum  Season2{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;}@Overridepublic String toString() {return "Season{" +"name='" + name + '\'' +", desc='" + desc + '\'' +'}';}
}

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

  • 当我们使用enum关键字开发一个枚举类时,默认会继承Enum类;而且该枚举类是一个final类

  • 如果使用无参构造器创建枚举对象,则可以省略小括号

  • 当有多个枚举对象时,使用 ,隔开,最后以一个分号结尾

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

enum的常用方法

使用关键字enum时,会隐式继承Enum类,这样就可以使用Enum类的相关方法

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

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

  • ordinal():返回当前对象的位置号,默认从0开始

  • values():返回当前枚举类中所有的常量对象

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

  • compareTo():比较两个枚举常量的大小(编号),返回的结果是两个枚举常量的编号相减得到的数

public class Demo05 {public static void main(String[] args) {Season2 autumn = Season2.AUTUMN;System.out.println(autumn.name());System.out.println(autumn.ordinal());Season2[] values = Season2.values();for (Season2 season : values) {System.out.println(season);}Season2 autumn1 = Season2.valueOf("AUTUMN");System.out.println("season1="+autumn1);System.out.println(autumn == autumn1);System.out.println(Season2.AUTUMN.compareTo(Season2.SUMMER));}
}
enum  Season2{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;}@Overridepublic String toString() {return "Season{" +"name='" + name + '\'' +", desc='" + desc + '\'' +'}';}
}

enum的使用细节

  • 使用enum关键字创建的枚举类,就不能再继承其它类了,因为使用enum创建的枚举类会隐式的继承Enum类,而Java是单继承机制

  • 枚举类和普通类一样,可以实现接口


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

相关文章

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码计算方面的通俗诠释的试…

最好懂的CRC校验规则讲解

文章目录 前言何为校验如何生成CRC校验码按字节位反转确定左移多少位生成多项式的数值式模二除法其它说明 前言 CRC校验的原理非常复杂,但是用起来却很简单,甚至别人写好了函数,直接拿来调用即可,但是我们还是需要了解一点这个校…