Del*_*ung 62 java performance boolean nullable
如何检查布尔值是否为空?所以,如果我知道"hideInNav"为空.如何阻止它进一步执行?像下面的东西似乎不起作用,但为什么?
boolean hideInNav = parent.getProperties().get("hideInNav", false);
String hideNavigation = hideInNav != null ? hideInNav : "";
Run Code Online (Sandbox Code Playgroud)
Eic*_*ich 108
boolean只能是true或false因为它是原始数据类型(+ boolean变量默认值是false).Boolean如果要使用null值,可以使用该类.Boolean是一种引用类型,这是您可以分配null给布尔"变量"的原因.例:
Boolean testvar = null;
if (testvar == null) { ...}
Run Code Online (Sandbox Code Playgroud)
在Java中,null仅适用于对象引用; 由于boolean是原始类型,因此无法分配null.
从你的例子中获取上下文很难,但我猜测如果hideInNav不在返回的对象中getProperties(),你指出的(默认值?)将是false.我怀疑这是你看到的错误,因为false它不等于null,所以hideNavigation得到空字符串?
您可以通过代码示例的更多上下文获得更好的答案.
唯一可以是a null的是非原始的.
A boolean只能持有TRUE或是FALSE原始的.在TRUE/ FALSE在内存实际上是数字(0和1)
0 =假
1 =正确
因此,当您实例化一个对象时,它将为null
String str; // will equal null
另一方面,如果您实例化一个原语,它将被分配为0默认值.
boolean isTrue; // will be 0
int i; // will be 0
boolean 是原始类型,因此不能为null.
它的盒装类型Boolean可以为null.
该函数可能返回a Boolean而不是a boolean,因此将结果赋值给Boolean-type变量将允许您测试null.