在处理对象时,是否存在使用equals(Boolean)
并返回不同结果的情况?==
Boolean
Boolean.TRUE == myBoolean;
Boolean.TRUE.equals(myBoolean);
我在这里考虑的不是原始类型,只是布尔对象。
怎么样:
System.out.println(new Boolean(true) == new Boolean(true));
System.out.println(new Boolean(true) == Boolean.TRUE);
(两者都打印错误,原因与任何其他类型的对象相同)。
使用它会很危险,==
因为它myBoolean
可能不是源自常量之一,而是被构造为new Boolean(boolValue)
,在这种情况下==
总是会导致false
. 你可以只使用
myBoolean.booleanValue()
既不==
也不equals
参与,给出可靠的结果。如果您还必须满足null
-values,那么没有什么比您的equals
方法更好的了。
if (Boolean.TRUE == new Boolean(true)) {
System.out.println("==");
}
if (Boolean.TRUE.equals(myBoolean)) {
System.out.println("equals");
}
在这种情况下,第一个是假的。如果条件为真,则只有第二个。
它打印:
等于
==
仅在比较应始终使用的对象时适用于原始类型o.equls(Object ob)