在Java中,将int类型转换为String类型有多种方法,以下是几种最常用和推荐的方法,并附有代码示例和优缺点分析。

最推荐的方法
| 方法 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
String.valueOf() |
最推荐,性能好,代码清晰,null安全。 |
无明显缺点。 | 通用场景,特别是将基本类型转为String。 |
Integer.toString() |
性能也很好,语义明确,null安全。 |
比valueOf稍长一点点。 |
同样适用于所有场景。 |
| (字符串拼接) | 代码最简洁。 | 性能最差,会创建多个临时StringBuilder对象。 |
不推荐在性能敏感或循环代码中使用。 |
String.format() |
功能强大,可格式化数字(如补零、千分位)。 | 代码稍长,对于简单转换有点“杀鸡用牛刀”。 | 需要格式化输出时(如日志、报表)。 |
使用 String.valueOf(int i) - 最推荐
这是最常用、最安全的方法。String类提供了一个重载的valueOf()方法,专门用于将基本数据类型(如int, double等)转换为String。
示例代码:
int number = 123; String str1 = String.valueOf(number); System.out.println(str1); // 输出: 123 System.out.println(str1.getClass().getName()); // 输出: java.lang.String
优点:
- 性能优秀:这是将基本类型转为
String最直接、最高效的方式之一。 - 代码清晰:意图非常明确,就是将一个值转换为字符串。
null安全:虽然int是基本类型,不可能为null,但如果你有一个Integer对象,String.valueOf()在处理null时会更安全(它会返回字符串"null",而不会抛出NullPointerException),对于int,这只是一个好习惯。
使用 Integer.toString(int i) - 强烈推荐
Integer类是int的包装类,它提供了toString()静态方法来完成转换,这个方法与String.valueOf()在底层实现上非常相似,性能也几乎一样好。

示例代码:
int number = 456; String str2 = Integer.toString(number); System.out.println(str2); // 输出: 456
优点:
- 性能优秀:与
String.valueOf()性能不相上下。 - 语义明确:直接表明你正在使用
Integer类进行转换。 null安全:同样是静态方法,直接作用于int值,不存在null引用问题。
使用空字符串拼接 ("" + int) - 不推荐
这是一种非常简洁的写法,利用了Java的字符串自动转换机制,当运算符的一边是String类型时,另一边会自动被转换为String。
示例代码:
int number = 789; String str3 = "" + number; System.out.println(str3); // 输出: 789
缺点:
- 性能较差:这种方式会先创建一个空的
String对象,然后创建一个StringBuilder对象,再执行append操作,在循环中,每次循环都会创建新的StringBuilder,导致大量不必要的对象创建,严重影响性能。 - 可读性稍差:虽然代码短,但对于不熟悉Java隐式转换的初学者来说,可能不如前两种方法直观。
注意:这种方式在将Integer对象转为String时可能会有NullPointerException的风险,
Integer num = null; String s = "" + num; // 会抛出 NullPointerException
而 String.valueOf(num) 则会返回 "null" 字符串。
使用 String.format() - 用于格式化
当你需要不仅仅是转换,还要对数字进行格式化(补零、添加千分位分隔符等)时,String.format()是最佳选择。
示例代码:
int number = 99;
// 简单转换
String str4 = String.format("%d", number);
System.out.println(str4); // 输出: 99
// 格式化:补零,保证总宽度为5
String str5 = String.format("%05d", number);
System.out.println(str5); // 输出: 00099
// 格式化:添加千分位分隔符
int bigNumber = 1234567;
String str6 = String.format("%,d", bigNumber);
System.out.println(str6); // 输出: 1,234,567
优点:
- 功能强大:可以轻松实现复杂的数字格式化。
- 灵活:支持多种格式化选项。
缺点:
- 对于简单的转换,代码比前几种方法更冗长。
如何选择?
- 日常开发、简单转换:首选
String.valueOf()或Integer.toString(),两者性能都很好,可以任选其一,String.valueOf()可能因为其通用性而更受青睐。 - 需要格式化数字:使用
String.format()。 - 追求代码极简(不推荐):可以使用
"" + int,但要清楚它的性能代价。 - 将
Integer对象转为String:强烈推荐String.valueOf(),因为它能优雅地处理null值,避免NullPointerException。
