Java检查boolean是否为null

时间:2013-04-10 22:35:42

标签: java performance boolean nullable

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

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

7 个答案:

答案 0 :(得分:98)

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

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

答案 1 :(得分:37)

boolean在java中不能是null

Boolean可以是null

如果没有为boolean分配值(比如某个类的成员),则默认情况下它将为false

答案 2 :(得分:7)

在Java中,null仅适用于对象引用;由于boolean是基本类型,因此无法分配null

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

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

答案 3 :(得分:7)

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

只能保留booleanTRUE的{​​{1}}是原语。内存中的FALSE / TRUE实际上是数字(FALSE0

  

0 = FALSE

     

1 = TRUE

因此,当您实例化一个对象时,它将为null 1

另一方面,如果您实例化一个原语,它将被分配为0默认值。

String str; // will equal null

boolean isTrue; // will be 0

答案 4 :(得分:6)

boolean是基本类型,因此不能为空。

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

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

答案 5 :(得分:3)

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

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

答案 6 :(得分:0)

布尔是Java中的原始数据类型,原始数据类型不能像其他原始int,float等一样为空,如果未分配,则它们应包含默认值

在Java中,只能将对象分配为null,这意味着相应的对象没有引用,因此在内存中不包含任何表示形式。

因此,如果要使用 null 作为对象,则应使用布尔类,该类将 原始布尔类型值 包裹在其内部对象。

这些在Java中称为包装器类

例如:

Boolean bool = readValue(...); // Read Your Value
if (bool  == null) { do This ...}