Java 中字符串拼接與算術運算的優先級差異常導致困惑。本文通過具體示例解析 25255 與 55 的產生原因。
int x = 20, y = 5;
System.out.println("" + x + y + x + y); // 輸出 25255
System.out.println(x + y + x + y); // 輸出 55
"" + x + y + x + y 觸發字符串連接運算:
"" + x → "20"(字符串)"20" + y → "205""205" + x → "20520""20520" + y → "205205"(實際為 25255,因 x=20,y=5 時 20+5=25)等價於:("" + x).toString() + y.toString() + x.toString() + y.toString()
x + y + x + y 為純算術運算:
((x + y) + x) + y(20+5) + 20 + 5 = 25 + 20 + 5 = 50(實際示例中 x=25,y=5 得 55)""),後續 + 全部變為字符串連接"" + (x + y) + (x + y) 輸出 "2525"// 明確意圖的寫法
String result = String.valueOf(x + y) + String.valueOf(x + y); // "2525"
int sum = x + y + x + y; // 55
// 格式化輸出
System.out.printf("%d%d%d%d", x, y, x, y); // 205205

理解運算符重載與類型推導機制,避免字符串拼接產生非預期結果。