在 Java 中,将 int 类型转换为 String 类型有多种方法,以下是几种常用方法的详细说明和示例代码。

使用 String.valueOf()
这是最常用、最推荐的方法,它是一个静态方法,专门用于将基本数据类型转换为字符串。
特点:
- 简洁高效:代码清晰,性能良好。
- 可读性高:意图明确,一看就知道是在做类型转换。
- 安全:如果传入的
int是null,String.valueOf()会抛出NullPointerException,但对于基本类型int它不可能为null,所以非常安全。
示例代码:
int number = 123; String str = String.valueOf(number); System.out.println(str); // 输出: 123 System.out.println(str.getClass().getName()); // 输出: java.lang.String
使用 Integer.toString()
Integer 类是 int 的包装类,它提供了一个静态方法 toString() 来完成转换。

特点:
- 功能明确:直接调用
Integer类的方法,逻辑上非常清晰。 - 性能与
String.valueOf()相当:在底层实现上,String.valueOf(int i)实际上就是调用了Integer.toString(i),所以它们的性能几乎没有差别。
示例代码:
int number = 456; String str = Integer.toString(number); System.out.println(str); // 输出: 456
使用空字符串连接( 运算符)
这是一种非常直观的技巧,通过将 int 与一个空字符串 进行连接,Java 会自动将 int 转换为 String。
特点:

- 最直观:对于初学者来说,最容易理解。
- 性能稍差:每次使用 连接字符串时,如果目标不是
String,JVM 会先将其转换为String,然后创建一个新的String对象,在循环等高频操作中,可能会产生性能问题(因为字符串是不可变的, 操作会创建新对象),但对于单次转换,影响可以忽略不计。 - 不推荐在高性能代码中使用:在循环或频繁拼接的场景下,应优先使用
StringBuilder。
示例代码:
int number = 789; String str = "" + number; System.out.println(str); // 输出: 789
使用 String.format()
String.format() 方法使用格式化字符串来生成新的字符串,类似于 C 语言中的 printf,这是一种更灵活的方式,可以在转换的同时进行格式化。
特点:
- 功能强大:不仅可以转换,还可以指定格式,比如补零、设置宽度等。
- 适用于复杂场景:当你需要对数字进行特定格式化时,这是最佳选择。
示例代码:
int number = 100;
// 基本转换
String str1 = String.format("%d", number);
System.out.println(str1); // 输出: 100
// 格式化转换,例如补零
String str2 = String.format("%05d", number); // 格式化为5位,不足前面补0
System.out.println(str2); // 输出: 00100
// 格式化转换,指定宽度,右对齐
String str3 = String.format("%10d", number); // 格式化为10位,右对齐
System.out.println(str3); // 输出: " 100"
使用 Integer 的构造函数
你可以创建一个 Integer 对象,然后调用该对象的 toString() 方法。
特点:
- 不推荐:这种方法比前几种更啰嗦,因为它多创建了一个不必要的
Integer对象,直接使用Integer.toString()更高效。
示例代码:
int number = 2025; // 先创建 Integer 对象,再调用 toString() String str = new Integer(number).toString(); System.out.println(str); // 输出: 2025
总结与推荐
| 方法 | 示例 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|---|
String.valueOf() |
String.valueOf(num) |
简洁、高效、推荐 | 无明显缺点 | 日常开发首选,简单直接的场景。 |
Integer.toString() |
Integer.toString(num) |
高效、意图明确 | 无明显缺点 | 与 String.valueOf() 一样优秀,是很好的替代方案。 |
| 空字符串连接 () | "" + num |
最直观、易读 | 性能稍差,不推荐在循环中使用 | 快速、临时的转换,代码简单时使用。 |
String.format() |
String.format("%d", num) |
功能强大,支持格式化 | 对于简单转换来说有点“杀鸡用牛刀” | 需要对数字进行格式化(如补零、设置宽度)时。 |
Integer 构造函数 |
new Integer(num).toString() |
无 | 啰嗦,性能低(多创建对象) | 不推荐使用,有更优的替代方案。 |
性能对比(微基准测试结果)
在大多数现代 JVM 上,String.valueOf() 和 Integer.toString() 的性能几乎完全相同,并且都优于空字符串连接 的方式。String.format() 因为需要解析格式化字符串,所以性能会稍差一些。
- 日常开发中,请优先使用
String.valueOf()或Integer.toString()。 它们是业界标准,兼具了性能、可读性和简洁性。 - 如果只是想快速写几行代码,
"" + num也是一个可行的选择,但要避免在性能敏感的循环中使用。 - 当你需要对数字进行格式化时,
String.format()是不二之选。
