黑马程序员技术交流社区

标题: Boolean的构造方法可以接受null吗? [打印本页]

作者: 李永佳    时间: 2016-2-17 16:47
标题: Boolean的构造方法可以接受null吗?
Boolean b = new Boolean(null);
像上面的代码是正确的吗?


[size=+2]构造方法摘要
Boolean(boolean value)
          分配一个表示 value 参数的 Boolean 对象。
Boolean(String s)
          如果 String 参数不为 null 且在忽略大小写时等于 "true",则分配一个表示 true 值的 Boolean 对象。
boolean的值不是只有true和false吗!而且Boolean类的构造函数可以接受boolean或者String,并没有说明可以接受null啊。
反正在某个测试题中是正确的,但是我不知道原因,谁可以帮忙解答。


作者: 玉质彼端    时间: 2016-2-17 17:15
Boolean b = new Boolean(null);
System.out.println(b);
// 运行结果为:false
作者: 参禅悟道    时间: 2016-2-17 17:20
本帖最后由 参禅悟道 于 2016-2-17 17:23 编辑

你看解释的时候,是不是没看全呀。
API上原话:如果 String 参数不为 null 且在忽略大小写时等于 "true",则分配一个表示 true 值的 Boolean 对象。否则分配一个表示 false 值的 Boolean 对象。

后面还有否则呢,否则的意思就是如果参数是null就分配一个表示false的Boolean对象。
另外:Java中,null是一个关键字,用来标识一个不确定的对象。因此可以将null赋给引用类型变量。而Boolean构造函数的参数是String类型,是引用类型,所以可以把null赋过来。

QQ截图20160217171737.png (38.18 KB, 下载次数: 295)

QQ截图20160217171737.png

作者: 李永佳    时间: 2016-2-18 11:15
玉质彼端 发表于 2016-2-17 17:15
Boolean b = new Boolean(null);
System.out.println(b);
// 运行结果为:false

这个......
我自己也试过,可以有什么卵用?我要的是解释
作者: 李永佳    时间: 2016-2-18 11:19
参禅悟道 发表于 2016-2-17 17:20
你看解释的时候,是不是没看全呀。
API上原话:如果 String 参数不为 null 且在忽略大小写时等于 "true", ...

卧槽,我明白了。还以为null是当作boolean类型参数呢。原来是作为String类型的参数,传递到第二个构造函数中,也就是说,只有String的值是true的时候Boolean才是true,否则其他任何情况无论TRUE或false或null或abc都是false。
原来如此




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2