在 Java 中,将 int 类型转换为 String 类型有几种常用方法,以下是几种主要的方法,从最推荐到其他可选方法,并附有示例和说明。

| 方法 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|
String.valueOf(int i) |
最推荐,清晰、高效,专为基本类型设计。 | 无明显缺点。 | ⭐⭐⭐⭐⭐ |
Integer.toString(int i) |
非常推荐,简洁、高效,是 String.valueOf 内部调用的方法。 |
无明显缺点。 | ⭐⭐⭐⭐⭐ |
"" + int |
简单,直观。 | 性能稍差,会创建不必要的 StringBuilder 对象,可读性有争议。 |
⭐⭐⭐ |
Integer(int).toString() |
教学意义,展示了对象创建过程。 | 效率最低,会创建一个不必要的 Integer 对象。 |
⭐ |
使用 String.valueOf(int i) (最推荐)
这是最常用且官方推荐的方法,它是一个静态方法,专门用于将各种基本数据类型(包括 int)转换为 String。
语法:
String str = String.valueOf(123);
示例代码:
public class IntToStringExample {
public static void main(String[] args) {
int number = 100;
String strNumber;
// 使用 String.valueOf() 进行转换
strNumber = String.valueOf(number);
System.out.println("原始 int 值: " + number);
System.out.println("转换后的 String 值: " + strNumber);
System.out.println("类型: " + ((Object)strNumber).getClass().getName());
}
}
优点:

- 可读性强:代码意图非常明确,就是将一个值转换为字符串。
- 性能好:这是为基本类型转换而优化的标准方法。
- 安全:即使
int变量为null(虽然基本类型不可能为null,但在处理可能为null的包装类Integer时很安全),它也能优雅地处理(会调用String.valueOf((Integer) null),结果是字符串 "null")。
使用 Integer.toString(int i) (非常推荐)
这是 Integer 类中的一个静态方法,它的功能与 String.valueOf(int i) 几乎完全相同,并且是 String.valueOf(int i) 内部实际调用的方法。
语法:
String str = Integer.toString(123);
示例代码:
public class IntToStringExample {
public static void main(String[] args) {
int number = 456;
String strNumber;
// 使用 Integer.toString() 进行转换
strNumber = Integer.toString(number);
System.out.println("原始 int 值: " + number);
System.out.println("转换后的 String 值: " + strNumber);
}
}
优点:

- 简洁:代码非常简短。
- 性能好:和
String.valueOf一样高效。 - 意图明确:直接表明了从整数到字符串的转换。
使用空字符串连接 "" + int (简单但非最佳)
这是一种非常普遍的“捷径”,利用了 Java 的类型转换和字符串连接机制,当 运算符的一边是字符串时,另一边会被自动转换为字符串。
语法:
String str = "" + 123;
示例代码:
public class IntToStringExample {
public static void main(String[] args) {
int number = 789;
String strNumber;
// 使用空字符串连接进行转换
strNumber = "" + number;
System.out.println("原始 int 值: " + number);
System.out.println("转换后的 String 值: " + strNumber);
}
}
内部工作原理:
"" + number 在编译后会被 Java 编译器优化为 new StringBuilder().append("").append(number).toString(),虽然最终结果一样,但这个过程比直接调用 String.valueOf 或 Integer.toString 多创建了一个 StringBuilder 对象。
优点:
- 简单直观:对于初学者来说非常容易理解。
缺点:
- 性能稍差:在性能要求极高的循环中,频繁创建
StringBuilder对象会带来不必要的开销。 - 可读性有争议:一些开发者认为这种方式不够“纯粹”,因为它混合了类型转换和连接操作。
使用 Integer 对象的 toString() 方法 (不推荐)
这种方法首先将 int 基本类型装箱(boxing)成一个 Integer 对象,然后调用该对象的 toString() 方法,这种方式效率最低,因为它创建了一个不必要的中间对象。
语法:
String str = new Integer(123).toString();
示例代码:
public class IntToStringExample {
public static void main(String[] args) {
int number = 101;
String strNumber;
// 创建 Integer 对象,然后调用 toString()
strNumber = new Integer(number).toString();
System.out.println("原始 int 值: " + number);
System.out.println("转换后的 String 值: " + strNumber);
}
}
缺点:
- 效率低:创建了不必要的
Integer对象,会触发垃圾回收,影响性能。 - 代码冗余:比前三种方法都繁琐。
注意:
从 Java 9 开始,这种方式已被标记为 @Deprecated(不推荐使用),因为它是不必要的开销,现代 Java 代码应避免使用它。
如何选择?
| 场景 | 推荐方法 |
|---|---|
| 日常开发、追求最佳实践 | String.valueOf(int i) 或 Integer.toString(int i),两者都是优秀的选择,可以看作是等效的。 |
| 代码量要求极简 | Integer.toString(int i),因为它比 String.valueOf 短一个字符。 |
| 快速原型、代码量不重要 | "" + int,因为它最快输入,但在正式项目中,建议使用前两种方法。 |
| 应避免 | new Integer(int).toString()。 |
补充:反向转换 (String 转 int)
如果你需要将 String 转换回 int,可以使用 Integer.parseInt() 或 Integer.valueOf()。
String str = "123"; int number; // 方法1: parseInt() 直接返回基本类型 int number = Integer.parseInt(str); // 方法2: valueOf() 返回 Integer 包装类,然后自动拆箱为 int number = Integer.valueOf(str); System.out.println(number); // 输出: 123
注意: 如果字符串不是一个有效的整数表示("abc"),这些方法会抛出 NumberFormatException 异常。
