12

在处理对象时,是否存在使用equals(Boolean)并返回不同结果的情况?==Boolean

Boolean.TRUE == myBoolean;

Boolean.TRUE.equals(myBoolean);

我在这里考虑的不是原始类型,只是布尔对象。

4

4 回答 4

11

怎么样:

System.out.println(new Boolean(true) == new Boolean(true));
System.out.println(new Boolean(true) == Boolean.TRUE);

(两者都打印错误,原因与任何其他类型的对象相同)。

于 2013-05-08T09:36:47.520 回答
2

使用它会很危险,==因为它myBoolean可能不是源自常量之一,而是被构造为new Boolean(boolValue),在这种情况下==总是会导致false. 你可以只使用

myBoolean.booleanValue()

既不==也不equals参与,给出可靠的结果。如果您还必须满足null-values,那么没有什么比您的equals方法更好的了。

于 2013-05-08T09:36:51.667 回答
2
if (Boolean.TRUE == new Boolean(true)) {
    System.out.println("==");
}

if (Boolean.TRUE.equals(myBoolean)) {
    System.out.println("equals");
}

在这种情况下,第一个是假的。如果条件为真,则只有第二个。

它打印:

等于

于 2013-05-08T09:39:36.380 回答
0

==
仅在比较应始终使用的对象时适用于原始类型o.equls(Object ob)

于 2013-05-08T09:39:08.970 回答