Java处理Boolean和NULL

时间:2015-08-04 09:39:28

标签: java boolean

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

2 个答案:

答案 0 :(得分:9)

那是因为Boolean的构造函数(如果提供null)将分配一个表示值false的布尔对象

请在此处阅读:http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html

  

public Boolean(String s)

     

如果字符串,则分配一个表示值true的Boolean对象   参数不是null并且与字符串相同,忽略大小写   “真正”。否则,分配一个表示该值的Boolean对象   假。示例:new Boolean(“True”)生成一个布尔对象   代表真实。 new Boolean(“yes”)生成一个布尔对象   代表错误。参数:s - 要转换为的字符串   布尔值。

答案 1 :(得分:3)

如果查看Boolean类的源代码,可以认为传递null值会返回false

private static boolean toBoolean(String name) { 
    return ((name != null) && name.equalsIgnoreCase("true"));
 }