2013-12-07 138 views

回答

5

這是因爲Java使用'優先'來評估表達式。在這種情況下,它從左邊開始,它在右邊,因爲操作都是+它們都具有相同的優先順序,所以使用從左到右的順序。在第一個'添加'中,您添加一個數字和一個字符串。 Java假定'+'是用來執行字符串連接,並且你得到結果。然後將其添加到20,並獲得(字符串連接)結果"10 20". Finally you add the 30, again adding to a String, so you get the result「10 2030」。

注意,如果你改變你的操作順序來:

System.out.println(num1+num2+" "+num3); 

num1+num2將被視爲數字,會做數字此外,給最終的結果:"30 30"

要獲得正確的值,您可以通過使用括號(...)(其運算符優先級高於'+')創建子表達式來更改評估順序,並獲得結果:

System.out.println(num1 + " " + (num2 + num3)); 

num2 + num3首先作爲數字表達式進行評估,然後纔將其作爲字符串表達式的一部分進行合併。

0

查找運算符優先級,當不同類型的操作數

0

在java中的「+」操作符不同操作數的操作方式不同如何工作+。

  1. 對於整數操作數它作爲整數加法
  2. 對於它作爲級聯操作串操作。

Java表達式的評估基於優先規則。在您的情況下,只有'+'運算符,因此評估是從左到右。

對於整數和字符串操作數java'+'操作符執行字符串連接。

所以NUM1 + 「」 + NUM2 + NUM3執行是

(integer + String) + int + int 
      (String + int)+ int 
        String + int 

你的期望了放可以用括號強制優先用於(num2 + num3)來實現。

相關問題