我们如何比较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