2013-10-04 109 views
0

如果下面的「如果」語句演算值爲真,那麼的值輸出= 20,否則10 ..聲明評價if語句的Java

有人可以解釋遞增運算符是如何在這裏工作?

public class Test { 

    public static void main(String[] args) throws IOException { 
     int Output = 10; 
     boolean b1 = true; 
     if ((b1 == true) && ((Output += 10) == 20)){ 
      System.out.println("We are Equal = " + Output); 
     } 
     else{ 
      System.out.println("Not Equal = " + Output); 
     } 
    } 
} 

回答

5

這不是那麼多的+=運算符工作不同;這是&&運營商。

運營商&&短路。如果b1是錯誤的,那麼b1 && (anything else)可能是真的,因此它將停止評估。因此,Output += 10不計算如果b1是不正確的,所以Output將是10

如果b1是真實的,那麼它必須不斷地看到,如果條件的其餘部分是真實的。在這樣做時,必須評估Output += 10,從而通過10增加的Output值,使得該整數值10加入到Output的當前值的Output 20.

+0

+1只是想補充一點,如果'&&'變成'&'(位智),那麼總是會評估'Output + = 10',因爲該操作不會短路。 – dkatzel

1

值。在此之後,輸出值將使用==運算符進行比較,該運算符僅在布爾運算上運行。

在這個特定的代碼段,因爲b1是真實和輸出是20將其值增加10之後,if塊的條件爲真,因此else將被丟棄,任何代碼是內部的if塊將被執行。

-1

1)+ = 表示「預增」。所以,用Output=10的if塊將如下一次增量是done..So,IF塊的第一次 執行過程中進行

if ((b1 == true) && ((Output = Output + 10) == 20)){ 

這裏,產值將與20相比..它會進行如下..

if ((b1 == true) && ((20) == 20)){ 

2)=+ 是指 「後增量」。所以,產值將有20 incrementation..So之前,如果塊的第一次執行期間相比,..那就按照以下步驟..

if ((b1 == true) && ((10) == 20)){ 

希望這有助於交代:-)

+0

沒有'= +'操作符。 「x = + 10」這個語句會給x賦值「+ 10」。 – Grodriguez

+0

另外,'+ ='是一個複合賦值運算符(http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.26.2)。不要將它與預增量運算符('++ x')混淆。 – Grodriguez

+0

ohh ..我的壞!謝謝你這個傢伙:-) – milin4evr