一. 枚举
枚举(Enum)是一种特殊的“类”,用于表示一组常量(不可变的变量,例如常量)。
要创建一个枚举,使用 enum
关键字(而不是 class
或 interface
),并使用逗号分隔常量。值得注意的是,枚举常量通常使用大写字母表示。
在 Java 中,enum
(枚举类型)是一种特殊的类,用于表示一组常量。可以通过点(.
)语法访问枚举常量。
示例 1:
1 | enum Level { // 枚举 Level 的定义,列出了三个常量:LOW、MEDIUM 和 HIGH |
示例 2 :
也可以在一个类内部定义 enum
1 | public class Main { |
示例 3 :
枚举常常在 switch
语句中使用,用来检查对应的值。
1 | enum Level { |
示例 4:
遍历枚举
values()
方法是枚举类型中的一个方法,它返回一个包含所有枚举常量的数组。
1 | enum Level { // 定义一个枚举类型 Level |
解释语句:for (Level myVar : Level.values())
Level.values()
是Level
枚举类型的静态方法,它返回一个包含所有Level
枚举常量的数组(在此例中是LOW
,MEDIUM
,HIGH
)。myVar
是循环变量,它在每一次循环时将保存当前枚举常量的值。Level
是枚举类型的名称,myVar
是该枚举类型的变量。
代码执行过程:
Level.values()
返回一个Level[]
数组,其中包含LOW
,MEDIUM
,HIGH
这三个枚举常量。- 增强型
for
循环遍历该数组,并且每次循环将数组中的一个常量赋值给myVar
变量。 - 然后,
System.out.println(myVar)
会打印出myVar
的值,即当前的枚举常量。
二. Enums 与 Classes 的区别
Enums 和 Classes 都可以拥有属性和方法。它们的主要区别在于:
- 枚举常量是
public static final
的
枚举常量在枚举中是固定不变的(不可更改)。这意味着枚举常量在声明时已经定义,并且它们的值无法被修改或覆盖。 - 枚举不能创建对象,也不能继承其他类
与普通类不同,枚举不能通过new
关键字来实例化对象,且枚举不能继承其他类(但是可以实现接口)。枚举类本身是隐式继承自java.lang.Enum
的。
三. 为什么以及何时使用枚举(Enums)?
在以下情况下,使用枚举是合适的:
- 当你有一组固定且不会改变的值时,例如:月份、星期几、颜色、扑克牌的花色等等。
- 枚举常量的值是固定的,因此它们通常用于表示一组有限的、固定的选项。