Java布尔相等

时间:2017-07-13 15:50:09

标签: java boolean

在Java中,Boolean.TRUE方法具有以下实现

 /**
 * The {@code Boolean} object corresponding to the primitive
 * value {@code true}.
 */
public static final Boolean TRUE = new Boolean(true);

现在:

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

打印:

false
true

为什么?!

1 个答案:

答案 0 :(得分:2)

Boolean.TRUE不是方法,而是成员变量声明。

public static final Boolean TRUE = new Boolean(true);

无论何时使用new运算符,它都会创建一个新实例,运算符==会比较实例引用而不是它们的内容(equals比较内容),这意味着下面将比较两个不同的实例引用和不是他们的内容,因此是false

new Boolean(true) == new Boolean(true)

由于Boolean.TRUE对于Boolean包装类是静态的,下面表示您正在比较相同的静态变量(不是它们的内容而是实际的实例引用),因此它是true

Boolean.TRUE == Boolean.TRUE