代碼片段
int a = 90;
System.out.println('a' + 1); // 輸出 98
System.out.println("" + 'a' + 1); // 輸出 a1
原因分析
第一句:'a' + 1
'a' 是 char 字面量,編碼值 97 (ASCII)。
- 發生數值提升:char → int,進行整數加法:
97 + 1 = 98。
println(int) 輸出數字 98。
第二句:"" + 'a' + 1
"" 是空 String。
- 左到右結合:
("" + 'a') 先執行,char 被轉為 String "a",結果為 "a"。
- 接著
"a" + 1,int 1 轉為 String "1",拼接得 "a1"。
println(String) 輸出 "a1"。
關鍵規則
- + 左邊有 String → 字符串拼接,其他操作數轉 String。
- + 兩邊皆為數值類型(含 char) → 數學加法。
- char 在單獨參與算術時視為 int;參與拼接時視為單字符字符串。
最佳實踐
- 明確意圖時使用
String.valueOf()、Character.toString()、String.format()。
- 避免在同一表達式混用算術與拼接,易產生困惑。