2013-07-30 53 views
-3

請只是我的好奇心,可以用來(code example see at line 38th(code edited)布爾(布爾)值切換

Boolean bol = true; 
Boolean bol1 = !bol; 

我的問題是

  • 其應有的方式,或者是有(任何)可能不足,問題爲什麼要避免使用
  • 是正確的結果是相同的布爾和布爾值
  • 是否有另一種Java數據類型,其中可能切換表達式,邏輯l值
+3

你到底想達到什麼目的?我不明白你在問什麼。 –

+1

咦?問題在哪裏? – Oleksiy

+0

在第58行沒有這樣的代碼。 – Eric

回答

1

是的,這是正確的方法,它可以同時處理布爾和布爾值。

你的「另一種數據類型」可能是整數,用於存儲布爾值爲0和1,但我不知道誰會這樣做,如果我們有真正的布爾值。

在那裏,你可以使用這個:

int a = 1; 
int negated = 1-a; 
+0

或更一般的,你可以通過'(a + 1)%n'遍歷一個'n'選項列表。 –

6

第二個指令將拋出一個NullPointerException如果bol爲null。如果你確定布爾值不爲空,那麼沒問題。

2

是的,它可以。

布爾值可以包含第三個值「null」,布爾值只能包含truefalse

如果你有一個函數

public static void hi(boolean b) {...}; 

public static void main(String[] args){ 
    Boolean b = null; 
    hi(b); // ... throws a NullPointerException at Runtime only 
} 

這就是所謂的自動裝箱,因爲Reflection需要與包真正的類。

思考也有

Void (realy wired in real code) 
Integer 
Float 
Enum (sometimes) 
+1

反射與布爾的存在有什麼關係?布爾值在反射之前。主要是因爲集合只存儲對象,並且因爲有時需要一個可空布爾值。 –

+0

'boolean []'也是一個集合 - 在這裏沒有明確需要'Boolean',即使集合可以包含一個Container來僅存儲布爾值。但是你不能用'hi(int b)'中的'Boolean'來識別'hi'。 –

+0

boolean []是一個數組。而布爾是隻存儲布爾值的標準容器。正如我所說,布爾從Java的一開始就存在,當時反​​射還沒有存在。 –