在 Java 中,将 int 类型转换为 String 类型有多种方法,以下是几种最常用和推荐的方法,并附有详细的解释和示例代码。

使用 String.valueOf() (最推荐)
这是最常用、最简洁且性能最好的方法之一。String.valueOf() 是一个静态方法,它可以将各种基本数据类型(包括 int)转换为其对应的字符串表示。
特点:
- 简洁易读:代码清晰明了。
- 性能优秀:JVM 对此方法有很好的优化。
- 非空安全:如果传入的
int变量本身就是null(虽然int是基本类型,不能为null,但如果是Integer对象,valueOf(null)会抛出NullPointerException),但对于int来说非常安全。
示例代码:
public class IntToStringExample {
public static void main(String[] args) {
int number = 123;
// 使用 String.valueOf()
String str1 = String.valueOf(number);
System.out.println("原始 int 值: " + number);
System.out.println("转换后的 String 值: " + str1);
System.out.println("转换后的类型: " + ((Object)str1).getClass().getName()); // java.lang.String
}
}
使用 Integer.toString()
这是另一种非常标准和高效的方法。Integer 是 int 的包装类,它提供了一个 toString() 静态方法,可以直接将 int 值转换为字符串。

特点:
- 语义清晰:明确表示这是将一个整数值转换为字符串。
- 性能同样优秀:与
String.valueOf()在底层实现上非常相似,性能差异可以忽略不计。 - 功能更丰富:
Integer.toString()还有一个重载版本Integer.toString(int i, int radix),可以将整数转换为指定进制(如二进制、十六进制)的字符串。
示例代码:
public class IntToStringExample2 {
public static void main(String[] args) {
int number = 456;
// 使用 Integer.toString()
String str2 = Integer.toString(number);
System.out.println("原始 int 值: " + number);
System.out.println("转换后的 String 值: " + str2);
// 进制转换示例
String binaryStr = Integer.toString(number, 2); // 转换为二进制字符串
String hexStr = Integer.toString(number, 16); // 转换为十六进制字符串
System.out.println("二进制表示: " + binaryStr); // 输出: 111001000
System.out.println("十六进制表示: " + hexStr); // 输出: 1c8
}
}
使用空字符串拼接
这是一种非常直观的技巧,通过将 int 与一个空字符串 进行拼接,Java 会自动调用 toString() 方法将 int 转换为字符串。
特点:

- 非常直观:对于初学者来说很容易理解。
- 性能稍差:虽然现代 JVM 优化得很好,但这种方式通常会创建一个临时的
StringBuilder对象,理论上性能略逊于前两种直接调用的方法,但在大多数实际应用中,这种差异可以忽略不计。
示例代码:
public class IntToStringExample3 {
public static void main(String[] args) {
int number = 789;
// 使用空字符串拼接
String str3 = "" + number;
System.out.println("原始 int 值: " + number);
System.out.println("转换后的 String 值: " + str3);
}
}
使用 String.format()
String.format() 方法使用格式化字符串来构建新的字符串,类似于 C 语言中的 printf,你可以使用 %d 作为 int 的占位符。
特点:
- 格式化强大:当你需要将
int嵌入到更复杂的格式化字符串中时非常有用。 - 灵活性高:可以同时转换多个变量,并控制格式(如补零、对齐等)。
- 略显冗余:如果只是为了简单地将一个
int转成String,使用此方法有些“杀鸡用牛刀”。
示例代码:
public class IntToStringExample4 {
public static void main(String[] args) {
int number = 101;
// 使用 String.format()
String str4 = String.format("%d", number);
System.out.println("原始 int 值: " + number);
System.out.println("转换后的 String 值: " + str4);
// 格式化示例:在数字前补零,使其总宽度为5
String formattedStr = String.format("%05d", number);
System.out.println("格式化后的字符串: " + formattedStr); // 输出: 00101
}
}
总结与对比
| 方法 | 示例 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|---|
String.valueOf() |
String.valueOf(i) |
最推荐,简洁,性能好,通用 | 无明显缺点 | 绝大多数情况下,这是首选。 |
Integer.toString() |
Integer.toString(i) |
语义清晰,性能好,支持进制转换 | 无明显缺点 | 当你需要进行进制转换时,这是不二之选。 |
| 空字符串拼接 | "" + i |
直观,易于理解 | 性能略低,可读性在复杂代码中下降 | 简单脚本、快速原型或代码可读性要求不高的场景。 |
String.format() |
String.format("%d", i) |
功能强大,支持复杂格式化 | 对于简单转换略显繁琐 | 当你需要格式化输出(如补零、固定宽度)时使用。 |
额外注意:Integer 对象与 int 的转换
如果你有一个 Integer 对象(int 的包装类),转换方式略有不同:
Integer integerObj = new Integer(999); // 方法1:直接调用对象的 toString() 方法 String strFromObj = integerObj.toString(); // 方法2:使用 String.valueOf() String strFromObj2 = String.valueOf(integerObj); // 方法3:自动拆箱 String strFromObj3 = integerObj + ""; System.out.println(strFromObj); // 输出: 999
重要提示:Integer 对象可能为 null,直接调用 toString() 会抛出 NullPointerException,这时使用 String.valueOf() 是最安全的,因为它会返回字符串 "null" 而不是抛出异常。
Integer possiblyNullObj = null; // 安全 String safeStr = String.valueOf(possiblyNullObj); // safeStr 的值是 "null" // 危险!会抛出 NullPointerException // String dangerousStr = possiblyNullObj.toString();
对于日常的 int 到 String 的转换,强烈推荐使用 String.valueOf(),它在可读性、性能和通用性之间取得了完美的平衡,如果明确需要进行进制转换,则使用 Integer.toString(int i, int radix)。
