在处理equals(Boolean)
个对象时,是否会出现使用==
和Boolean
会返回不同结果的情况?
Boolean.TRUE == myBoolean;
Boolean.TRUE.equals(myBoolean);
我不是在考虑这里的原始类型,只是布尔对象。
答案 0 :(得分:9)
怎么样:
System.out.println(new Boolean(true) == new Boolean(true));
System.out.println(new Boolean(true) == Boolean.TRUE);
(对于the same reason as any other type of objects,都打印为false。)
答案 1 :(得分:2)
使用==
会很危险,因为myBoolean
可能不是源自其中一个常量,而是构造为new Boolean(boolValue)
,在这种情况下==
会总是导致false
。你可以只使用
myBoolean.booleanValue()
既不涉及==
也不涉及equals
,可提供可靠的结果。如果您还必须满足null
- 值,那么没有比equals
方法更好的了。
答案 2 :(得分:0)
==
仅适用于基本类型
比较对象时,应始终使用o.equls(Object ob)
答案 3 :(得分:0)
if (Boolean.TRUE == new Boolean(true)) {
System.out.println("==");
}
if (Boolean.TRUE.equals(myBoolean)) {
System.out.println("equals");
}
在这种情况下,第一个是假的。如果条件为真,则仅为秒。
它打印:
等于