2013-04-10 221 views
45

如何檢查布爾值是否爲空?所以如果我知道「hideInNav」爲空。如何停止 它進一步執行?像下面的東西似乎不工作,但爲什麼?Java檢查布爾值是否爲空

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

回答

72

boolean只能是truefalse,因爲它是一個primitive datatype(+一boolean變量的默認值是false)。如果您想使用null值,則可以使用類Boolean。布爾值是一個引用類型,這就是您可以將null分配給布爾「變量」的原因。例如:

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

感謝@Eich但如果我想使用空值,您將如何使用類「布爾」?你有任何代碼示例?對不起,超新的這個。 – 2013-04-10 22:39:46

+0

在這個具體的例子中,布爾hideInNav = parent.get ..... – p91paul 2013-04-10 22:42:26

+0

沒問題Delmon,每個人都是初學者:)。 p91paul爲您提供了正確的代碼,以便您可以檢查空值:)。我還添加了一個例子。 – Eich 2013-04-10 22:45:02

26

boolean不能在Java null

A Boolean,但是,可以是null

如果一個boolean沒有賦值(比如說一個類的成員),那麼默認情況下它將是false

3

null是分配給參考類型的值。 null是保留值,表示引用不像對象的實例。

A boolean不是對象的實例。它是一種原始類型,如intfloat。以相同的方式:int x的值爲0boolean x的值爲false

+0

同意。不是拼寫錯誤的最佳時機!快速編輯:) – christopher 2013-04-11 09:29:52

5

boolean是原始類型,因此不能爲空。

其盒裝類型Boolean可以爲空。

函數可能會返回Boolean而不是boolean,因此將結果分配給Boolean類型的變量將允許您測試無效性。

6

在Java中,null僅適用於對象引用;由於boolean是原始類型,因此不能分配null

很難從你的例子獲取上下文,但我猜,如果hideInNav不是由getProperties(),返回的對象(默認值?)你已經表示將false。我懷疑這是你看到的錯誤,因爲false不等於null,所以hideNavigation得到空字符串?

對於代碼示例,您可能會得到一些更好的答案。

7

唯一可以是null的東西是非原始的。

A boolean哪些只能容納TRUEFALSE是原始的。在存儲器中的TRUE/FALSE實際上是數字(01

0 = FALSE

1 = TRUE

因此,當你實例化對象將是空 String str; // will equal null

另一方面,如果你立即一個原語它將被分配到0默認。

boolean isTrue; // will be 0

int i; // will be 0

+1

「布爾」中的布爾值的大寫字母「......」是不幸的。 'boolean'類型的變量只能保存'true'和'false',但是一個'Boolean'類型的變量保存一個'Boolean'對象或'null'。 – 2013-06-24 17:09:59

-6

其實原始數據類型的默認值是空的局部變量。

+1

對不起,但這是不正確的。原始數據類型始終具有非空值。 – Eich 2015-08-10 10:27:31

+1

默認值是'false',不管它是否是本地的,都與任何事情無關。 https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html – 2017-03-11 14:35:49