如何检查布尔值是否为空?所以,如果我知道“hideInNav”为空。我该怎么办? 它从进一步执行?像下面的东西似乎不起作用,但为什么?
boolean hideInNav = parent.getProperties().get("hideInNav", false);
String hideNavigation = hideInNav != null ? hideInNav : "";
答案 0 :(得分:98)
boolean
只能是true
或false
,因为它是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
的是非原始人。
只能保留boolean
或TRUE
的{{1}}是原语。内存中的FALSE
/ TRUE
实际上是数字(FALSE
和0
)
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的实例。它是一种原始类型,如int
和float
。与以下相同:int x
的值为0
,boolean x
的值为false
。
答案 6 :(得分:0)
布尔是Java中的原始数据类型,原始数据类型不能像其他原始int,float等一样为空,如果未分配,则它们应包含默认值
在Java中,只能将对象分配为null,这意味着相应的对象没有引用,因此在内存中不包含任何表示形式。
因此,如果要使用 null 作为对象,则应使用布尔类,该类将 原始布尔类型值 包裹在其内部对象。
这些在Java中称为包装器类
例如:
Boolean bool = readValue(...); // Read Your Value
if (bool == null) { do This ...}