我们如何比较Java中枚举的成员?
Java中的枚举(枚举)是一种存储一组常量值的数据类型。您可以使用枚举来存储固定值,例如一周中的天,一年中的月等。
enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }
您还可以使用自定义值定义一个枚举来声明常量。但是您需要一个实例变量,一个构造函数和一个getter方法来返回值。
您可以使用“==”运算符或equals()方法比较两个枚举的成员。
使用“==”比较枚举成员
如果将两个枚举成员与“==”运算符进行比较,则两者都必须为同一类型,否则会产生编译时错误。
enum Vehicles { ACTIVA125, ACTIVA5G, ACCESS125, VESPA, TVSJUPITER; } enum Scoters { ACTIVA125, VESPA, TVSJUPITER, ACTIVA5G, ACCESS125,; } public class EnumComparison { public static void main(String args[]) { Vehicles veh[] = Vehicles.values(); Scoters sco[] = Scoters.values(); //比较两种不同类型的枚举成员 System.out.println(veh[1]==sco[1]); } }
编译时错误
EnumComparison.java:14: error: incomparable types: Vehicles and Scoters System.out.println(veh[1]==sco[1]); ^ 1 error
使用“==”运算符,您可以比较相同类型(仅)的成员枚举。
示例
让我们创建一个名称为Vehicles的枚举,其中包含5个常量,代表5个不同scoters的模型,其价格为值,如下所示-
enum Vehicles { //带值的常量 ACTIVA125(80000), ACTIVA5G(70000), ACCESS125(75000), VESPA(90000), TVSJUPITER(75000); //实例变量 private int price; //Constructor to initialize the 实例变量 Vehicles(int price) { this.price = price; } //静态显示价格的方法 public int getPrice(){ return this.price; } }
在以下Java程序中,该displayPrice()
方法接受车辆枚举的常量,并使用“==”运算符将其与车辆中的所有其他常量进行比较,并在匹配的情况下替换特定常量(价格)的值。
public class EnumerationExample { public void displayPrice(Vehicles enum) { if (enum == Vehicles.ACTIVA125) { System.out.println("The price of "+enum+" is:"+enum.getPrice()); } else if (enum == Vehicles.ACTIVA5G) { System.out.println("The price of "+enum+" is:"+enum.getPrice()); } else if (enum == Vehicles.ACCESS125) { System.out.println("The price of "+enum+" is:"+enum.getPrice()); } else if (enum == Vehicles.VESPA) { System.out.println("The price of "+enum+" is:"+enum.getPrice()); } else if (enum == Vehicles.TVSJUPITER) { System.out.println("The price of "+enum+" is:"+enum.getPrice()); } else { System.out.println("Model not found"); } } public static void main(String args[]) { EnumerationExample obj = new EnumerationExample(); obj.displayPrice(Vehicles.ACTIVA125); obj.displayPrice(Vehicles.ACTIVA5G); obj.displayPrice(Vehicles.ACCESS125); obj.displayPrice(Vehicles.VESPA); obj.displayPrice(Vehicles.TVSJUPITER); } }
输出结果
The price of Activa125 is:80000 The price of ACTIVA5G is:70000 The price of ACCESS125 is:75000 The price of VESPA is:90000 The price of TVSJUPITER is:75000
使用“==”比较枚举成员
您可以使用equals()方法比较两个相同或不同类型的枚举成员。
enum Vehicles { ACTIVA125, ACTIVA5G, ACCESS125, VESPA, TVSJUPITER; } enum Scoters { ACTIVA125, VESPA, TVSJUPITER, ACTIVA5G, ACCESS125,; } public class EnumerationComparison { public static void main(String args[]) { Vehicles veh[] = Vehicles.values(); Scoters sco[] = Scoters.values(); //比较两种不同类型的枚举成员 System.out.println(veh[1].equals(sco[1])); System.out.println(veh[1].equals(veh[1])); } }
输出结果
False true