首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java int 與 String 相互轉換完全指南:四種方法效能與陷阱解析

     編輯:Java 相關知識

前言

在 Java 開發中,int 基本型別與 String 參考型別的相互轉換是高頻操作。雖然語法簡單,但不同寫法在物件建立數量、效能、異常處理上卻有細微差異。本文將系統整理四種主流轉換方式,並從底層實作角度分析優缺點,助你寫出更高效、穩健的程式碼。

一、int → String 兩大寫法

方法一:字串串接 s = i + \"\"

int i = 12345;
String s = i + \"\";
  • 原理:編譯器會將其優化為 new StringBuilder().append(i).append(\"\").toString()。
  • 物件建立:會產生 兩個 String 物件(一個 StringBuilder 內部緩衝區轉換產生的 String,另一個為空字串常數 \"\",雖常數池複用但仍計入建立過程)。
  • 適用場景:程式碼簡潔,適合非效能敏感的業務邏輯。

方法二:String.valueOf(i)(推薦)

String s = String.valueOf(i);
  • 原理:直接呼叫 String 靜態方法,內部轉呼叫 Integer.toString(i)。
  • 物件建立:僅產生一個 String 物件,無額外中介物件。
  • 優勢:語意明確、效能最佳、可讀性高,為官方推薦寫法。

二、String → int 兩大寫法

方法一: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 後內部優化可能使用快取,但語意上仍建立包裝物件)。
  • 物件建立:額外產生一個 Integer 包裝物件,隨後拆箱取值。
  • 異常:同樣拋出 NumberFormatException。
  • 缺點:多一次物件建立與拆箱操作,效能較差,除非你確實需要 Integer 物件,否則不建議使用。

三、效能與最佳實務總結表

轉換方向推薦寫法物件建立數備註
int → StringString.valueOf(i)1官方標準,語意明確
int → Stringi + \"\"2簡潔但隱含 StringBuilder 開銷
String → intInteger.parseInt(s)0直接回傳基本型別,效能最優
String → intInteger.valueOf(s).intValue()1 (Integer)多餘包裝物件,僅在需 Integer 物件時使用

四、實務防呆建議

  1. 必做 try-catch:所有字串轉數字操作皆應包裹 try-catch (NumberFormatException),避免髒資料導致程式中斷。
  2. 前置驗證:可用正則 ^-?\\d+$ 先行檢查字串格式,減少異常拋出開銷。
  3. 避免在迴圈熱點路徑使用 i + \"\":長迴圈下改用 String.valueOf 可減少 GC 壓力。

結語

掌握 int 與 String 轉換的底層差異,不僅能寫出更高效能的程式碼,更能在 Code Review 時展現專業深度。記住口訣:轉字串用 valueOf,轉數字用 parseInt,異常處理不可少。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved