2008-10-22 75 views
166

是否有更好的方法來否定Java中的布爾值而不是簡單的if-else?在Java中切換布爾變量的最簡單方法?

if (theBoolean) { 
    theBoolean = false; 
} else { 
    theBoolean = true; 
} 
+0

哦不錯,我正要問同樣的問題,雖然我的問題將特定於JavaScript/as3,或ECMAScript一般我想......這將很容易被這個問題所覆蓋。 – 2009-01-07 06:36:50

+0

如果沒有!操作符?? – onmyway133 2014-09-12 07:10:59

回答

433
theBoolean = !theBoolean; 
+11

這真的很明顯 - 哎呀!不知道爲什麼我沒有想到它。謝謝。 – 2008-10-22 02:46:23

+26

我投票贊成!! bool運算符類似於++ i和--i ;-)) – ypnos 2008-10-22 02:50:19

+0

!布爾看起來像是一個自然的選擇 - 可能在未來。 – 2009-01-07 06:38:29

138
theBoolean ^= true; 

較少的按鍵,如果你的變量大於四個字母

不再
0

前:

boolean result = isresult(); 
if (result) { 
    result = false; 
} else { 
    result = true; 
} 

後:

boolean result = isresult(); 
result ^= true; 
14

有幾個

的 「明顯」 的方式(大多數人)

theBoolean = !theBoolean; 

「最短」 的方式(大部分時間)

theBoolean ^= true; 

「最直觀」的方式(最不確定)

theBoolean = theBoolean ? false : true; 

額外:在方法調用

theMethod(theBoolean ^= true); 

切換,並使用自賦值運算符總是返回什麼已被分配,這將切換通過位運算符的值,然後返回新分配的值用於方法調用。

0

如果使用布爾NULL值,並認爲他們是假的,試試這個:

static public boolean toggle(Boolean aBoolean) { 
    if (aBoolean == null) return true; 
    else return !aBoolean; 
} 

如果不交給布爾NULL值,試試這個:

static public boolean toggle(boolean aBoolean) { 
    return !aBoolean; 
} 

這些都是乾淨因爲他們顯示方法簽名的意圖,與相比更容易閱讀!運營商,並可以很容易地調試。

使用

boolean bTrue = true 
boolean bFalse = false 
boolean bNull = null 

toggle(bTrue) // == false 
toggle(bFalse) // == true 
toggle(bNull) // == true 

當然,如果你使用Groovy的或允許擴展方法的語言,你可以註冊一個擴展,只是去做:

Boolean b = false 
b = b.toggle() // == true