2013-10-23 80 views
-5

我目前正在讀OCA Java SE 7中編程我學習指南,我需要幫助理解的例子。這裏是代碼:if語句例如幫助Java

boolean b; 
    boolean bValue = (b = true); 
    //Evaluates to true 

    if(bValue) 
     System.out.println("TRUE"); 
    else 
     System.out.println("FALSE"); 

    if (bValue = false) 
     System.out.println("TRUE"); 
    else 
     System.out.println("FALSE"); 

    if(bValue == false) 
     System.out.println("TRUE"); 
    else 
     System.out.println("FALSE"); 

我在哪裏有這個代碼的問題是第二個輸出。爲什麼它是虛假的而不是真實的?
bValue現在是否爲false,因此不能滿足顯示「FALSE」的含義?

編輯:我知道== =之間的差異。我不明白的是不應該打印「真」?

在此先感謝。

+0

我知道=和==之間的區別。 =是Assignment,==等於... – user2830571

+0

祝您考試好運。 – Luke

回答

4

bValue = false要求平等的操作方法分配。等號運算符返回右邊的值。這使運營商等於可以鏈接:

boolean foo; 
boolean bar; 
foo = bar = false; 

bValue = false,等號運算符的結果是什麼實際上正在評估,所以它是假的。

6

因爲在這一行:

if (bValue = false) 

分配falsebValue,和表達的結果是false

2

因爲=運算符,而不使用==它的計算結果爲false。換句話說,第二個if語句將值false分配給變量bValue。

0

你是分配與假,而不是比較機智假。

這就是爲什麼你應該把它作爲代碼:

if (!bValue) 

,爲什麼你所擁有的是一個反模式。