Java 布尔相等式



在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

为什么?!

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

最新更新