在 Java 中,将 int 类型转换为 String 类型有多种方法,每种方法都有其适用场景和特点,以下是几种最常用和推荐的方法:

使用 String.valueOf(int i) - 最推荐
这是最常用、最直接的方法,它是一个静态方法,专门用于将基本数据类型(如 int, double, boolean 等)转换为 String。
特点:
- 代码简洁: 可读性非常高。
- 性能优秀: 这是 Java 语言设计者提供的标准转换方式,通常经过了高度优化。
- 非空安全: 参数是基本类型
int,永远不会为null,因此不会抛出NullPointerException。
示例代码:
int number = 123; String str = String.valueOf(number); System.out.println(str); // 输出: 123 System.out.println(str.getClass().getName()); // 输出: java.lang.String // 处理负数 int negativeNumber = -456; String negativeStr = String.valueOf(negativeNumber); System.out.println(negativeStr); // 输出: -456
使用 Integer.toString(int i) - 同样推荐
Integer 是 int 的包装类。Integer.toString() 方法是专门用来将 int 转换为 String 的。

特点:
- 代码简洁: 和
String.valueOf()一样简洁。 - 性能优秀: 与
String.valueOf()在底层实现上几乎完全相同,性能差异可以忽略不计。 - 意图明确: 直接表明了将一个整数转换为字符串的意图。
示例代码:
int number = 789; String str = Integer.toString(number); System.out.println(str); // 输出: 789 System.out.println(str.getClass().getName()); // 输出: java.lang.String
使用空字符串拼接 ("" + i) - 不推荐,但常见
这是一种非常简洁的“技巧”,通过将 int 与一个空字符串 进行拼接,Java 会自动调用 toString() 方法将 int 转换为 String。
特点:
- 代码极简: 代码量最少。
- 性能较差: 这种方式会创建一个临时的
StringBuilder对象来完成拼接,相比前两种直接调用的方法,会有轻微的性能开销,在性能敏感的代码或循环中应避免使用。 - 可读性稍差: 对于不熟悉这个技巧的人来说,意图不如前两种方法明确。
示例代码:
int number = 101; String str = "" + number; System.out.println(str); // 输出: 101
使用 String.format() - 适用于格式化场景
如果你需要在转换的同时进行格式化(指定数字的宽度、补零、添加千位分隔符等),String.format() 是最佳选择。
特点:
- 功能强大: 不仅可以转换,还能按照指定格式进行格式化。
- 性能开销: 因为涉及格式化解析,性能比前三种方法差,仅在需要格式化时使用。
示例代码:
int number = 42;
// 基本转换
String str1 = String.format("%d", number);
System.out.println(str1); // 输出: 42
// 指定宽度,右对齐,用空格补齐
String str2 = String.format("%5d", number);
System.out.println(str2); // 输出: " 42" (前面有三个空格)
// 指定宽度,左对齐,用空格补齐
String str3 = String.format("%-5d", number);
System.out.println(str3); // 输出: "42 " (后面有三个空格)
// 指定宽度,用0补齐
String str4 = String.format("%05d", number);
System.out.println(str4); // 输出: "00042"
// 添加千位分隔符 (在Java 7+中可用)
String str5 = String.format("%,d", 1234567);
System.out.println(str5); // 输出: "1,234,567"
使用 Integer(int).toString() - 不常用
这种方式首先创建一个 Integer 对象,然后再调用其 toString() 方法,对于从 int 到 String 这是不必要的步骤,因为它多了一次对象创建的开销。
特点:
- 性能最差: 涉及到装箱操作,会创建一个不必要的
Integer对象,应尽量避免。 - 代码冗余: 没有任何优势。
示例代码(不推荐):
int number = 2025; // 不推荐这样做 String str = new Integer(number).toString(); System.out.println(str); // 输出: 2025
总结与对比
| 方法 | 示例 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|---|
String.valueOf() |
String.valueOf(i) |
最佳实践,简洁,性能好,意图清晰 | 无明显缺点 | 绝大多数情况下的首选 |
Integer.toString() |
Integer.toString(i) |
最佳实践,简洁,性能好,意图明确 | 无明显缺点 | 绝大多数情况下的首选 |
"" + i |
"" + i |
代码极简 | 性能稍差(创建StringBuilder),可读性稍差 |
快速原型、非性能关键代码 |
String.format() |
String.format("%d", i) |
功能强大,可进行格式化 | 性能开销大,仅用于格式化 | 需要格式化输出时 |
new Integer(i).toString() |
new Integer(i).toString() |
无 | 性能最差,代码冗余 | 几乎从不使用 |
核心建议
- 日常开发中,优先使用
String.valueOf(int)或Integer.toString(int)。 两者在性能和可读性上都非常出色,可以互换使用。 - 当你需要对数字进行格式化(如补零、加千位分隔符等)时,使用
String.format()。 - 尽量避免使用
"" + i和new Integer(i).toString()的方式。
