Boolean.TRUE == myBoolean与Boolean.TRUE.equals(myBoolean)

时间:2013-05-08 09:34:11

标签: java object boolean equals equality

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

Boolean.TRUE == myBoolean;

Boolean.TRUE.equals(myBoolean);

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

4 个答案:

答案 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");
}

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

它打印:

  

等于