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

2019-09-02 05:15发布

是否有过在那里使用情况equals(Boolean)==用打交道时将返回不同的结果Boolean对象?

Boolean.TRUE == myBoolean;

Boolean.TRUE.equals(myBoolean);

我没有想过基本类型在这里,只是布尔对象。

Answer 1:

怎么样:

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

(两个打印假,为相同的原因作为任何其他类型的对象 )。



Answer 2:

这将是危险的使用==因为myBoolean可能没有起源于一个常量,但都被构建为new Boolean(boolValue)在这种情况下==总是会导致false 。 你可以只用

myBoolean.booleanValue()

既不==也不equals参与,给人可靠的结果。 如果必须满足null -值,以及,那么没有什么比你的更好equals方法。



Answer 3:

if (Boolean.TRUE == new Boolean(true)) {
    System.out.println("==");
}

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

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

它打印:

等于



Answer 4:

==仅适用于基本类型
当你比较的对象,你应该总是使用o.equls(Object ob)



文章来源: Boolean.TRUE == myBoolean vs. Boolean.TRUE.equals(myBoolean)