测试是否与双打相等

Testing for equality with Doubles

在Java中,大写Double可以为null。

但是如果我有双打 ab 并且我这样做:

if (a.equals(b))

如果其中之一为空,它会崩溃。有没有更好的方法来比较它们?

使用

if (null != a && null != b && a.compareTo(b) == 0) {
    // whatever goes here
}

这是正确的,遗憾的是您必须添加额外的空值检查。 所以你要么写

if ((a != null && a.equals(b)) || (a == null && b == null))

或者您的代码不能接受 null 值。

一个简短的方法可以是:

boolean c = (a != null && b != null) ? a.equals(b) : false;
if (c){
   ...
}

Java 7+ 中最简单的方法是:

Objects.equals(a, b)

如果您使用的是早期版本的Java,您可以使用条件运算符:

(a != null) ? a.equals(b) : (b == null)