Java检查布尔值是否为空
你如何检查一个布尔值是否为空? 所以如果我知道“hideInNav”是空的。 我如何阻止它进一步执行? 像下面的东西似乎不工作,但为什么?
boolean hideInNav = parent.getProperties().get("hideInNav", false); String hideNavigation = hideInNav != null ? hideInNav : "";
boolean
只能是true
或false
因为它是一个基本的数据types (+ boolean
variables默认值为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
的是非原始的。
一个只能保持TRUE
或FALSE
boolean
是一个原语。 内存中的TRUE
/ FALSE
实际上是数字( 0
和1
)
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
,因此将结果赋值给Boolean
typesvariables将允许您testing是否为空。
null
是分配给引用types的值。 null
是一个保留的值,表示引用不像一个对象的实例。
一个boolean
不是一个对象的实例。 这是一个原始types,如int
和float
。 以同样的方式: int x
的值为0
, boolean x
的值为false
。
实际上原始数据types的默认值对于局部variables是空的。