【发布时间】:2015-08-04 09:39:27
【问题描述】:
JAVA中的布尔对象可以有3个值True、False、NULL
public class First {
public static void main(String args[])
{
System.out.println("equals(new Boolean(\"True\"),True) :: " + isEqual(new Boolean("True"), true));
System.out.println("equals(new Boolean(\"False\"), new Boolean(null)) :: " + isEqual(new Boolean("False"), new Boolean(null)));
System.out.println("equals(new Boolean(\"False\"), null)) :: " + isEqual(new Boolean("False"), null));
}
static boolean isEqual(Boolean a, Boolean b)
{
return a.equals(b);
}
}
以上代码的输出是
equals(new Boolean("True"),True) :: true
equals(new Boolean("False"), new Boolean(null)) :: true
equals(new Boolean("False"), null)) :: false
请解释为什么案例2返回true,而案例3返回false
【问题讨论】:
-
显然 null 不能等于任何有效的非 null 引用。
-
null怎么可能等于任何其他值?第二个你正在创建对象new Boolean(null) -
new Boolean(null) 表示创建的布尔对象,其值为false。