2016-01-22 72 views
0

在原始布爾而言,就是靈長類動物的布爾在if語句

if(someBoolean == false){} 

if(someBoolean = false){} 

之間的差異比較,我寫了後者(在Eclipse)期待拋出一個錯誤,但沒有人。

+0

在後一種情況下,將值分配給布爾varibale,而在前一種情況下,將比較值。當你使用你不需要使用'=='運算符。你可以直接使用'if(someBoolean){}'或'if(!someBoolean){}'來表示真或假的情況。 –

回答

1

==用於比較

=用於assingnment。

因此,在您的第一種情況下,您正在比較值和第二種情況下分配。這兩條語句都會成功編譯和執行。

但是,如果尋找到使用的if語句中,那麼你可以簡單地做作爲一種有效的方法:

if(someBoolean) //for checking true 

if(!someBoolean) //for checking false 
+0

我假設它將some賦值給someBoolean,但由於在if語句中不能分配基本整數,所以感到困惑(回顧性地,我應該已經意識到布爾可以是獨立的爭論)。後續行動:你能想到這種情況下,這是必要的,或者它是一個多餘的功能? – user3367285

0

someBoolean = false將false值賦予該布爾值,而不是實際比較它是否爲false。

=分配

==比較

0

if(someBoolean=false)將設置爲false,以someBoolean然後返回someBoolean,然後if語句判斷someBoolean值,所以它會很好編譯。

但這樣的代碼不能編譯:

int val = 2; 
if(val = 3){ 
} 

它會編譯錯誤:

InCompatible Types:Required:boolean,Found

,因爲它的返回值類型爲int,不能被更改爲布爾類型的if語句需要。

0

someBoolean == false被比較,它返回一個布爾值 someBoolean = false正在分配,返回布爾值以及

0

if(someB oolean = false){}

上述語句首先將該值賦值給布爾變量,然後進行條件檢查。聲明中沒有錯誤。

如果(someBoolean == FALSE){}

這種說法只會做條件檢查。