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

Mohammad Irfan 2023年10月12日
  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