在 Java 中使用 == 或 equals() 方法比較 Java 列舉

Mohammad Irfan 2023年1月30日 2022年4月26日
  1. 在 Java 中使用 == 運算子比較列舉
  2. 在 Java 中使用 equals() 方法比較列舉值
  3. 比較列舉值並處理 null 安全性
  4. 在 Java 中比較兩個不同的列舉值
在 Java 中使用 == 或 equals() 方法比較 Java 列舉

本教程介紹如何使用 Java 中的 == 運算子或 equals() 方法比較 Java 列舉。

列舉是一組常量,用於收集日、月、顏色等資料集。在 Java 中,要建立列舉,我們使用 enum 關鍵字,然後為型別提供值。

本文將演示如何比較列舉值和物件。讓我們通過一些例子來理解。

在 Java 中使用 == 運算子比較列舉

==(等於)運算子是需要兩個運算元的二元運算子。它比較運算元並返回 truefalse

我們可以使用它來比較列舉值。請參見下面的示例。

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() 方法比較兩個值並返回一個布林值,truefalse。我們可以使用這種方法來比較列舉值。

在這裡,我們使用 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

相關文章 - Java Enum