在 Java 開發中,int 基本型別與 String 參考型別的相互轉換是高頻操作。雖然語法簡單,但不同寫法在物件建立數量、效能、異常處理上卻有細微差異。本文將系統整理四種主流轉換方式,並從底層實作角度分析優缺點,助你寫出更高效、穩健的程式碼。
s = i + \"\"int i = 12345;
String s = i + \"\";
new StringBuilder().append(i).append(\"\").toString()。StringBuilder 內部緩衝區轉換產生的 String,另一個為空字串常數 \"\",雖常數池複用但仍計入建立過程)。String.valueOf(i)(推薦)String s = String.valueOf(i);
String 靜態方法,內部轉呼叫 Integer.toString(i)。Integer.parseInt(s)(推薦)String s = \"12345\";
int i = Integer.parseInt(s);
int 基本型別。NumberFormatException。Integer.valueOf(s).intValue()int i = Integer.valueOf(s).intValue();
Integer.valueOf(s) 等價於 new Integer(Integer.parseInt(s))(Java 9 後內部優化可能使用快取,但語意上仍建立包裝物件)。NumberFormatException。Integer 物件,否則不建議使用。| 轉換方向 | 推薦寫法 | 物件建立數 | 備註 |
|---|---|---|---|
| int → String | String.valueOf(i) | 1 | 官方標準,語意明確 |
| int → String | i + \"\" | 2 | 簡潔但隱含 StringBuilder 開銷 |
| String → int | Integer.parseInt(s) | 0 | 直接回傳基本型別,效能最優 |
| String → int | Integer.valueOf(s).intValue() | 1 (Integer) | 多餘包裝物件,僅在需 Integer 物件時使用 |
try-catch (NumberFormatException),避免髒資料導致程式中斷。^-?\\d+$ 先行檢查字串格式,減少異常拋出開銷。i + \"\":長迴圈下改用 String.valueOf 可減少 GC 壓力。掌握 int 與 String 轉換的底層差異,不僅能寫出更高效能的程式碼,更能在 Code Review 時展現專業深度。記住口訣:轉字串用 valueOf,轉數字用 parseInt,異常處理不可少。