在 Java 中,将 int 类型转换为 String 类型有多种方法,每种方法都有其特点和适用场景,下面我将详细介绍最常用的几种方法,并给出示例代码和性能对比。

使用 String.valueOf()
这是最常用、最推荐的方法,它直观、易读,并且性能很好。
语法:
String str = String.valueOf(intValue);
示例:
int number = 123; String str = String.valueOf(number); System.out.println(str); // 输出: 123 System.out.println(str.getClass().getName()); // 输出: java.lang.String
优点:

- 可读性强:代码意图非常明确。
- 性能优良:底层实现非常高效,是 Java 开发者社区普遍认可的方式。
- 安全性高:如果传入的
int是基本类型,valueOf()不会返回null,如果传入的是Integer对象且为null,它会抛出NullPointerException,这有助于尽早发现问题。
使用 Integer.toString()
这是另一种非常标准和高效的方法。Integer 类是 int 的包装类,它提供了 toString() 方法来完成转换。
语法:
String str = Integer.toString(intValue);
示例:
int number = 456; String str = Integer.toString(number); System.out.println(str); // 输出: 456
优点:

- 性能同样优秀:与
String.valueOf()在性能上几乎没有差别,因为String.valueOf(int)内部就是调用了Integer.toString(int)。 - 语义清晰:直接表明了从
Integer类型转换。
使用空字符串拼接
这是一种简单快捷的“语法糖”,利用了 Java 的自动类型转换机制。
语法:
String str = "" + intValue;
示例:
int number = 789; String str = "" + number; System.out.println(str); // 输出: 789
工作原理:
当 运算符的一边是 String 类型,另一边是基本类型(如 int)时,Java 会自动将基本类型调用其 toString() 方法转换为 String,然后再进行字符串连接。
优点:
- 代码简洁:写起来最快,一行代码搞定。
缺点:
- 性能略差:虽然差异在大多数情况下可以忽略不计,但这种方法会创建一个临时的
StringBuilder对象来完成拼接,因此比前两种方法多了一层开销,在循环或大量转换的场景下,这种微小的性能差异可能会被放大。 - 可读性稍差:对于初学者来说,
"" + number的意图不如String.valueOf(number)那么一目了然。
使用 String.format()
当你需要将 int 格式化成特定格式的字符串时(补零、指定宽度等),String.format() 是最佳选择。
语法:
String str = String.format("%d", intValue);
示例:
int number = 10;
// 基本转换
String str1 = String.format("%d", number);
System.out.println(str1); // 输出: 10
// 格式化为固定位数,不足补零
String str2 = String.format("%05d", number);
System.out.println(str2); // 输出: 00010
// 格式化为固定位数,右对齐,不足补空格
String str3 = String.format("%5d", number);
System.out.println(str3); // 输出: " 10"
优点:
- 功能强大:支持复杂的格式化模式,非常灵活。
缺点:
- 性能开销最大:
String.format()是为了格式化而设计的,比前三种方法要慢得多,因为它需要解析格式字符串,如果只是单纯地转换类型,不推荐使用。
性能对比
为了直观地展示不同方法的性能差异,我们可以使用 JMH (Java Microbenchmark Harness) 进行基准测试,以下是典型的测试结果(数值仅供参考,具体取决于 JVM 和运行环境):
| 方法 | 相对性能 | 推荐度 | 备注 |
|---|---|---|---|
String.valueOf(int) |
最快 | ⭐⭐⭐⭐⭐ | 首选推荐,兼顾了性能和可读性。 |
Integer.toString(int) |
最快 | ⭐⭐⭐⭐⭐ | 与 valueOf 性能相当,同样是优秀选择。 |
"" + int |
稍慢 | ⭐⭐⭐ | 代码简洁,性能损失极小,日常使用可接受。 |
String.format("%d", int) |
最慢 | ⭐ | 仅在需要格式化时使用。 |
在追求极致性能的场景下,String.valueOf() 和 Integer.toString() 是最佳选择,在非性能敏感的日常代码中,它们之间的差异可以忽略不计,选择你个人认为最清晰、最易读的即可。
特殊情况:处理 null
当你处理一个可能为 null 的 Integer 对象时,上述方法的行为会有所不同:
Integer nullableInt = null; // String.valueOf() 会抛出 NullPointerException // String.valueOf(nullableInt); // Integer.toString() 会抛出 NullPointerException // Integer.toString(nullableInt); // "" + nullableInt 会得到 "null" 字符串,不会抛出异常 String str = "" + nullableInt; System.out.println(str); // 输出: null
- 如果确定输入是
int基本类型:优先使用String.valueOf(int)或Integer.toString(int)。 - 如果输入是
Integer对象且可能为null:- 如果希望遇到
null时抛出异常以暴露问题,使用String.valueOf()或Integer.toString()。 - 如果希望将
null安全地转换为"null"字符串,使用"" + nullableInt。
- 如果希望遇到
- 如果需要进行格式化:使用
String.format()。
