88

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

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

7 回答 7

142

boolean只能是truefalse因为它是原始数据类型(+boolean变量默认值为false)。Boolean如果您想使用null值,则可以使用该类。Boolean 是一种引用类型,这就是您可以分配null给布尔“变量”的原因。例子:

Boolean testvar = null;
if (testvar == null) { ...}
于 2013-04-10T22:37:19.593 回答
67

Aboolean不能null在 java 中。

Boolean然而,A可以是null

如果 aboolean没有被赋值(比如一个类的成员),那么它将是false默认值。

于 2013-04-10T22:37:25.753 回答
10

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

Aboolean只能持有TRUE或者FALSE是一个原语。内存中的TRUE/FALSE实际上是数字(01

0 = 假

1 = 真

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

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

boolean isTrue; // will be 0

int i; // will be 0

于 2013-04-10T22:48:15.760 回答
7

boolean是原始类型,因此不能为空。

它的装箱类型 ,Boolean可以为空。

该函数可能返回 aBoolean而不是 a boolean,因此将结果分配给Boolean-type 变量将允许您测试是否为空。

于 2013-04-10T22:39:32.727 回答
7

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

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

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

于 2013-04-10T22:40:04.890 回答
4

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

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

于 2013-04-10T22:39:11.333 回答
0

boolean是 Java 中的原始数据类型,原始数据类型不能像其他原始 int、float 等一样为 null,如果未分配,它们应该包含默认值。

在Java中,只有对象可以赋值为null,这意味着对应的对象没有引用,因此在内存中不包含任何表示。

因此,如果您想将 object 作为null使用,则应该使用 Boolean 类,该类将原始布尔类型值包装在其对象中。

这些在 Java 中称为包装类

例如:

Boolean bool = readValue(...); // Read Your Value
if (bool  == null) { do This ...}
于 2020-06-29T09:27:18.840 回答