Java检查布尔值是否为空

你如何检查一个布尔值是否为空? 所以如果我知道“hideInNav”是空的。 我如何阻止它进一步执行? 像下面的东西似乎不工作,但为什么?

boolean hideInNav = parent.getProperties().get("hideInNav", false); String hideNavigation = hideInNav != null ? hideInNav : ""; 

boolean只能是truefalse因为它是一个基本的数据types (+ booleanvariables默认值为false )。 如果要使用null值,则可以使用类Boolean 。 布尔是一个引用types,这就是你可以将null赋值给布尔variables的原因。 例:

 Boolean testvar = null; if (testvar == null) { ...} 

Java中的boolean不能为null

但是Boolean可以为null

如果一个boolean没有赋值(比如一个类的成员),那么默认情况下它将是false

在Java中, null仅适用于对象引用; 因为boolean是一个原始types,所以它不能被赋值为null

很难从你的例子中获取上下文,但是我猜测如果hideInNav不在getProperties()返回的对象中,你指定的(默认值?)将是false 。 我怀疑这是你看到的错误,因为false不等于null ,所以hideNavigation获取空string?

你可能会得到一些更好的答案,你的代码示例有更多的上下文。

唯一可以是null的是非原始的。

一个只能保持TRUEFALSE boolean是一个原语。 内存中的TRUE / FALSE实际上是数字( 01

0 =假

1 = TRUE

所以当你实例化一个对象时,它将是空的String str; // will equal null String str; // will equal null

另一方面,如果你立即一个原语,它将被分配到0默认值。

boolean isTrue; // will be 0

int i; // will be 0

boolean是一个基本types,因此不能为空。

它的装箱typesBoolean可以为null。

该函数可能返回Boolean而不是boolean ,因此将结果赋值给Booleantypesvariables将允许您testing是否为空。

null是分配给引用types的值。 null是一个保留的值,表示引用不像一个对象的实例。

一个boolean不是一个对象的实例。 这是一个原始types,如intfloat 。 以同样的方式: int x的值为0boolean x的值为false

实际上原始数据types的默认值对于局部variables是空的。