在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
为什么?!
答案 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