在 Java 中使用 == 或 equals() 方法比較 Java 列舉
Mohammad Irfan
2023年10月12日
本教程介紹如何使用 Java 中的 ==
運算子或 equals()
方法比較 Java 列舉。
列舉是一組常量,用於收集日、月、顏色等資料集。在 Java 中,要建立列舉,我們使用 enum 關鍵字,然後為型別提供值。
本文將演示如何比較列舉值和物件。讓我們通過一些例子來理解。
在 Java 中使用 ==
運算子比較列舉
==
(等於)運算子是需要兩個運算元的二元運算子。它比較運算元並返回 true
或 false
。
我們可以使用它來比較列舉值。請參見下面的示例。
enum Color {
red,
green,
yello,
white,
black,
purple,
blue;
}
public class SimpleTesting {
public static void main(String[] args) {
boolean result = isGreen(Color.blue);
System.out.println(result);
result = isGreen(Color.green);
System.out.println(result);
}
public static boolean isGreen(Color color) {
if (color == Color.green) {
return true;
}
return false;
}
}
輸出:
false
true
在 Java 中使用 equals()
方法比較列舉值
Java equals()
方法比較兩個值並返回一個布林值,true
或 false
。我們可以使用這種方法來比較列舉值。
在這裡,我們使用 Color
列舉來比較它的值。第一個值返回 false
,但第二個返回 true
。請參見下面的示例。
enum Color {
red,
green,
yello,
white,
black,
purple,
blue;
}
public class SimpleTesting {
public static void main(String[] args) {
boolean result = isGreen(Color.blue);
System.out.println(result);
result = isGreen(Color.green);
System.out.println(result);
}
public static boolean isGreen(Color color) {
if (color.equals(Color.green)) {
return true;
}
return false;
}
}
輸出:
false
true
比較列舉值並處理 null
安全性
在 Java 中,最成問題的問題是處理 null
值。它也適用於列舉比較;如果我們使用 equals()
方法比較列舉值並且列舉物件是 null
,它會丟擲 nullpointerexception
。請參見下面的示例。
enum Color {
red,
green,
yello,
white,
black,
purple,
blue;
}
public class SimpleTesting {
public static void main(String[] args) {
Color color = null;
boolean result = isGreen(color);
System.out.println(result);
result = isGreen(Color.green);
System.out.println(result);
}
public static boolean isGreen(Color color) {
if (color.equals(Color.green)) {
return true;
}
return false;
}
}
輸出:
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "javaexample.Color.equals(Object)" because "color" is null
但是,如果我們使用 ==
(等於)運算子並比較列舉值/物件,它不會丟擲 nullpointerexception
。這意味著該運算子是 null
安全的,並且比 equals()
方法更易於使用。請參見下面的示例。
enum Color {
red,
green,
yello,
white,
black,
purple,
blue;
}
public class SimpleTesting {
public static void main(String[] args) {
Color color = null;
boolean result = isGreen(color);
System.out.println(result);
result = isGreen(Color.green);
System.out.println(result);
}
public static boolean isGreen(Color color) {
if (color == Color.green) {
return true;
}
return false;
}
}
輸出:
false
true
在 Java 中比較兩個不同的列舉值
我們還可以使用 equals()
方法比較兩個列舉物件。由於兩個物件不同,因此在兩種情況下都返回 false
。請參見下面的示例。
enum Color {
red,
green,
yello,
white,
black,
purple,
blue;
}
enum MyColors {
green,
red,
blue;
}
public class SimpleTesting {
public static void main(String[] args) {
boolean result = isGreen(Color.red);
System.out.println(result);
result = isGreen(Color.green);
System.out.println(result);
}
public static boolean isGreen(Color color) {
if (color.equals(MyColors.red)) {
return true;
}
return false;
}
}
輸出:
false
false