Java检查boolean是否为null

问题描述 投票:56回答:6

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

boolean hideInNav = parent.getProperties().get("hideInNav", false);
String hideNavigation = hideInNav != null ? hideInNav : "";
java performance boolean nullable
6个回答
105
投票

boolean只能是truefalse因为它是primitive datatype(+ a boolean变量默认值是false)。如果要使用Boolean值,可以使用类null。 Boolean是一个引用类型,这就是你可以将null赋值给布尔“变量”的原因。例:

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

37
投票

在java中,boolean不能是null

然而,Boolean可以是null

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


7
投票

在Java中,null仅适用于对象引用;因为boolean是原始类型,所以不能分配null

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

您可以通过代码示例的更多上下文获得更好的答案。


7
投票

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

只能持有booleanTRUEFALSE是原始的。记忆中的TRUE / FALSE实际上是数字(01

0 =假

1 =正确

因此,当您实例化一个对象时,它将为null String str; // will equal null

另一方面,如果您实例化一个原语,它将被赋值为0 default。

boolean isTrue; // will be 0

int i; // will be 0


6
投票

boolean是一种原始类型,因此不能为null。

它的盒装类型Boolean可以为null。

函数可能返回Boolean而不是boolean,因此将结果分配给Boolean类型变量将允许您测试无效。


3
投票

null是分配给引用类型的值。 null是保留值,表示引用不类似于对象的实例。

boolean不是Object的实例。它是一种原始类型,如intfloat。以同样的方式:int x的值为0boolean x的值为false

© www.soinside.com 2019 - 2024. All rights reserved.