当前位置: 首页 > ai >正文

JAVA核心基础篇-枚举

什么是枚举

在 Java 中,枚举(Enumeration)是一种特殊的数据类型,用于定义固定数量的常量集合。它在 JDK 1.5 中被引入,提供了一种更优雅、类型安全的方式来表示固定的取值范围。

所谓的枚举就是相当于一种来存放常量的特殊的类。枚举本身就是一个类

枚举的定义

枚举使用enum关键字定义,基本语法如下:

enum 枚举名 {常量1,常量2,...常量n;
}
// 定义一个表示星期的枚举
enum Day {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
  • 枚举没有无参构造。
  • 反射不能破坏枚举。
  • 枚举成员的类型默认为,final和public和static修饰
  • 枚举中的构造方法必须用private修饰,所以默认为private,可以省略
  • 构造方法基本使用于有参枚举成员,再通过创建get方法获得参数

使用枚举的优点

  1. 类型安全:枚举常量是类型化的,编译器会检查类型匹配,避免错误赋值
  2. 不可变:枚举常量在定义后不能被修改
  3. 单例性:每个枚举常量都是枚举类的唯一实例
  4. 默认继承 Enum 类:所有枚举都隐式继承java.lang.Enum,因此不能再继承其他类
  5. 可实现接口:枚举可以实现一个或多个接口

枚举使用场景

  • 表示固定的取值范围(如星期、月份、季节等)
  • 状态码定义(成功、失败、警告等)
  • 替代常量定义(相比public static final方式更安全)
  • 开关选项(如性别、是否等二元选项)
  • 在 switch 语句中使用(比整数更易读)

枚举的常用方法

Enum类继承的常用方法:

  • name():返回枚举常量的名称
  • ordinal():返回枚举常量的位置索引(从 0 开始)
  • valueOf(Class<T> enumType, String name):根据名称获取枚举常量
  • values():返回枚举类型的所有常量数组(编译器自动生成)

枚举enum和静态变量的区别

有些时候变量的取值只在一个有限的集合内。例如,一些状态等等;

Java中定义的枚举类型都是Enum类的子类,它可以有构造器,方法和域。还继承了许多方法,toString()、valueOf()、values()等等具体看文档。这让它比静态变量更丰富。

枚举类型是强类型的,从而保证了系统安全性。枚举可以限定参数的个数,对调用者的行为能更加严格地进行控制。把一些运行期的参数检查放到了编译期。通俗的来讲就是枚举更加安全,提高了代码的可读性。

使用静态常量是无法存入更多的属性值使用枚举可以存储code,name,color,feel等信息,而且并没有限制,但是使用静态常量就只能存储code和name两个值还有就是在使用过程中,无法传入的参数进行限制使用枚举时,传入的参数为为Season的枚举类型的数据,这也就限定了参数的范围,降低了代码出错的可能性但是使用静态常量的话,传入的只是一个整型数据,如果使用时传递了一个1-4之外的数,程序时不会报错的,但是在运行时就会出错

枚举提供了一种清晰、安全的方式来处理固定集合的常量,在实际开发中广泛应用,特别是需要提高代码可读性和可维护性的场景。

http://www.xdnf.cn/news/18542.html

相关文章:

  • Claude Code 新手使用入门教程
  • 【Kubernetes知识点】资源配额与访问控制
  • Qt + windows+exe+msvc打包教程
  • AI热点周报(8.17~8.23):Pixel 10“AI周”、DeepSeek V3.1发布,英伟达再起波澜?
  • 【python】get_dummies()用法
  • AI大模型 限时找我领取
  • 心灵笔记:人生管理模型
  • 简单AI:搜狐公司旗下AI绘画产品
  • 均匀实心球内部引力与半径成正比的牛顿壳层定理证明
  • MATLAB实现CNN-LSTM-Attention 时序和空间特征结合-融合注意力机制混合神经网络模型的风速预测
  • c语言学习_数组使用_扫雷1
  • 1.十天通关常见算法100题(第一天)
  • 科研笔记:博士生手册
  • 【每天一个知识点】训推一体机
  • 数据结构的线性表:顺序表
  • 坑洼铁皮矫平机:把“波浪”变成“镜面”的科学魔法
  • 旅行足迹App技术架构全解析
  • 二、BPMNJS简介
  • 【51单片机非精准延时演示来回流水灯效果】2022-11-10
  • Claude Code赋能企业级开发:外卖平台核心系统的智能化重构
  • n8n 键盘快捷键和控制
  • 【Canvas与徽章】中国制造金色玻璃光徽章
  • 生成模型 | 扩散模型损失函数公式推导
  • 复杂工况漏检率↓79%!陌讯多模态融合算法在智慧能源设备检测的落地实践
  • Python 版本与 package 版本兼容性检查方法
  • 【Linux系列】macOS(MacBook)上获取 MAC 地址
  • 内网穿透教程
  • React学习(十三)
  • Java 泛型 T、E、K、V、?、S、U、V
  • week4-[字符数组]字符统计