java字串連線和運算子優先順序

3jingsh0u發表於2024-09-28

原始碼:
public class EnumTest {

public static void main(String[] args) {  
    int x = 100;  
    int y = 200;  
    
    System.out.println("x+y=" + y + x + y);  
    System.out.println(x + y + "=x+y");  
}  

}
程式輸出:
x+y=200100200
300=x+y
未曾見過的程式碼.
原因:

System.out.println("x+y=" + y + x + y);
在這條語句中,字串 "x+y=" 會被作為字串,後面的 + 運算子會執行字串連線。
按照運算子優先順序,從左到右的順序進行字串連線:
首先 "x+y=" + y 的結果為 "x+y=200"
然後再連線 + x,結果為 "x+y=200100"
最後連線 + y,結果為 "x+y=200100200"
所以,輸出為:
x+y=200100200

System.out.println(x + y + "=x+y");
在這一條語句中,x + y 會首先被計算,因為運算子 + 具有更高的優先順序(數值加法優先於字串連線)。
因此,x + y 的結果是 100 + 200,即 300。
接下來,這個結果與字串 "=x+y" 連線:
300 + "=x+y" 的結果為 "300=x+y"。
所以,輸出為:
300=x+y

相關文章