当我们定义一个枚举类时,我们使用关键字 enum。下面是一个简单的枚举类的示例:
enum Season {
SPRING,
SUMMER,
AUTUMN,
WINTER
}
在上面的示例中,我们定义了一个名为Season
的枚举类,它包含了四个枚举值:SPRING
、SUMMER
、AUTUMN
、WINTER
。这些枚举值代表了四个季节。你可以使用枚举值来表示特定的季节,例如:
Season currentSeason = Season.SUMMER;
System.out.println(currentSeason); // 输出 "SUMMER"
枚举类的每个枚举值都是该枚举类的一个实例,你可以像使用普通对象一样使用它们。你还可以为枚举值添加方法和属性,使其具有更多的功能。
enum 的比较
在 Java 中,枚举类的比较可以使用==
运算符进行,这是因为枚举类的常量是唯一的,每个常量都是枚举类的一个实例。
例如,假设我们有一个名为Day
的枚举类,其中包含了一周的所有天数作为常量:
enum Day {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
我们可以使用==
运算符来比较枚举类的常量,例如:
Day day1 = Day.MONDAY;
Day day2 = Day.TUESDAY;
if (day1 == day2) {
System.out.println("day1 and day2 are the same.");
} else {
System.out.println("day1 and day2 are different.");
}
上述代码将输出day1 and day2 are different.
,因为day1
和day2
是不同的枚举常量。 除了使用==
运算符进行比较外,还可以使用枚举类的equals()
方法进行比较,它是从 Object 类继承而来的。例如:
if (day1.equals(day2)) {
System.out.println("day1 and day2 are the same.");
} else {
System.out.println("day1 and day2 are different.");
}
上述代码将输出day1 and day2 are different.
,与使用==
运算符的结果相同。
枚举类的比较是基于枚举常量的引用进行的,而不是基于常量的值。因此,如果两个枚举常量的引用相同,它们被认为是相等的,即使它们的值不同。
enum 的name()方法
在 Java 中,枚举类提供了一个名为name()
的方法,用于获取枚举实例的名称。该方法返回一个字符串,表示该枚举实例的名称。例如,假设我们有一个名为Color
的枚举类:
enum Color {
RED, GREEN, BLUE;
}
我们可以使用name()
方法获取每个枚举实例的名称:
Color red = Color.RED;
System.out.println(red.name()); // 输出 "RED"
name()
方法对于获取枚举实例的名称非常有用,但需要注意的是,它返回的是枚举常量的名称,而不是枚举常量的值。如果需要获取枚举常量的值,可以使用枚举类的其他方法或属性来实现。
enum 的 ordinal() 方法
在 Java 中,枚举类提供了一个名为ordinal()
的方法,用于获取枚举实例的序号。该方法返回一个整数,表示该枚举实例在枚举类中的位置。例如,假设我们有一个名为Color
的枚举类:
enum Color {
RED, GREEN, BLUE;
}
我们可以使用ordinal()
方法获取每个枚举实例的序号:
Color red = Color.RED;
System.out.println(red.ordinal()); // 输出 0
Color green = Color.GREEN;
System.out.println(green.ordinal()); // 输出 1
Color blue = Color.BLUE;
System.out.println(blue.ordinal()); // 输出 2
ordinal()
方法返回的序号是从0开始的,按照枚举常量在枚举类中定义的顺序进行分配的。需要注意的是,ordinal()方法对于比较枚举实例的顺序是有用的,但在其他情况下应谨慎使用,因为它依赖于枚举常量的定义顺序,如果枚举常量的顺序发生变化,可能会导致代码出现错误。