如何比较Java中的两个布尔值?

时间:2017-09-12 18:34:02

标签: java

我必须将两个Boolean包装器相互比较。结果我想知道他们是否平等。

这就是我提出的:

public static boolean areEqual(final Boolean a, final Boolean b) {
    if (a == b) {
        return true;
    }

    if (a != null && b != null) {
        return a.booleanValue() == b.booleanValue();
    }

    return false;
}

是否有更好和/或更短的方法来正确比较两个Boolean包装器的相等性?

首先,我想使用Object.equals()Boolean.compareTo(),但这两种方式最终都可以使用NullPointerException,对吧? 也许有些东西我在这里看不到,这就是我要问的原因。

3 个答案:

答案 0 :(得分:7)

您可以获得最短的安全性(对于实现equals()的任何其他对象自然有效):

java.util.Objects.equals(a, b);

答案 1 :(得分:1)

您无需重新发明轮子。

如果您使用的是Java 7或更高版本,请使用java.util.Objects类(如Kayaman所述)。

如果您使用的是早期版本的java,请使用Apache BooleanUtils类。 尝试谷歌搜索“apache booleanutils”以了解如何获得它。

编辑:更正了java版本。

答案 2 :(得分:-2)

这对我有用。

 public class MyClass {
  public static void main(String args[]) {
    Boolean x=true;
    Boolean y=true;
    System.out.println(compare(x,y)); // true
    x=false;
    y=true;
    System.out.println(compare(x,y)); // false
    x=true;
    y=false;
    System.out.println(compare(x,y)); // false
    x=false;
    y=false;
    System.out.println(compare(x,y)); // true
    x=null;
    y=null;
    System.out.println(compare(x,y)); // true
  }
  public static boolean compare(final Boolean a, final Boolean b) {
    if (a == null || b == null) {
      return a == b;
    }
    return a.equals(b);
  }
}

使用https://www.jdoodle.com/online-java-compiler进行探测

编辑:为空值添加例外。