Java 中 IntegerString 的 7 种方法详解

一、方法概览

方法 是否推荐 适用场景 性能
String.valueOf() ✅ 强烈推荐 通用首选 ⭐⭐⭐⭐⭐
Integer.toString() ✅ 推荐 整数专用 ⭐⭐⭐⭐⭐
直接拼接 + "" ⚠️ 谨慎使用 简单调试 ⭐⭐
"" + integer ⚠️ 谨慎使用 同上 ⭐⭐
String.format() ✅ 推荐 格式化输出 ⭐⭐⭐
StringBuilder.append() ✅ 推荐 拼接场景 ⭐⭐⭐⭐
DecimalFormat ✅ 推荐 格式化(如千分位) ⭐⭐⭐

二、详细方法说明与示例

1. String.valueOf(Integer) —— 推荐首选

Integer num = 123;
String str = String.valueOf(num);
System.out.println(str); // 输出:123

优点

  • 支持 null 安全:String.valueOf(null) 返回 "null" 字符串
  • 通用性强,可用于所有对象类型
  • 内部调用 Integer.toString()

注意

Integer nullInt = null;
String s = String.valueOf(nullInt); // 返回字符串 "null",不是 null

📌 适合大多数场景,推荐作为默认选择


2. Integer.toString() —— 整数专用推荐

Integer num = 456;
String str = Integer.toString(num);
System.out.println(str); // 输出:456

优点

  • 专为整数设计,语义清晰
  • 性能与 String.valueOf() 相当
  • 支持指定进制:Integer.toString(num, 16) → 十六进制

📌 进制转换示例

System.out.println(Integer.toString(255, 16)); // "ff"
System.out.println(Integer.toString(8, 8));    // "10"
System.out.println(Integer.toString(10, 2));   // "1010"

✅ 适用于需要格式化进制输出的场景。


3. + "" 拼接法 —— 不推荐用于生产

Integer num = 789;
String str = num + "";
System.out.println(str); // 输出:789

⚠️ 问题

  • 底层使用 StringBuilder,小量使用无妨
  • 大量循环中性能较差
  • 代码不够清晰

反例(性能差)

// 避免在循环中这样写
for (int i = 0; i < 1000; i++) {
    String s = i + ""; // 每次创建 StringBuilder
}

📝 仅建议用于调试或简单脚本。


4. "" + integer —— 同上,不推荐

String str = "" + 123; // 等价于 123 + ""

+ "" 性能和机制相同,不推荐作为主要方法


5. String.format() —— 格式化输出推荐

Integer num = 1000;
String str = String.format("%d", num);
System.out.println(str); // 输出:1000

优点

  • 支持格式化(如补零、宽度控制)
  • 可读性强

📌 格式化示例

System.out.println(String.format("%05d", 42));     // "00042"(补零到5位)
System.out.println(String.format("%,d", 1000000)); // "1,000,000"(千分位)

✅ 适合需要格式化输出的场景,如日志、报表。


6. StringBuilder.append() —— 拼接场景推荐

Integer num = 123;
StringBuilder sb = new StringBuilder();
sb.append(num);
String str = sb.toString();

优点

  • 在字符串拼接场景中性能最优
  • 可链式调用

📌 拼接示例

Integer age = 25;
String name = "Alice";
String result = new StringBuilder()
    .append("Name: ").append(name)
    .append(", Age: ").append(age)
    .toString();

✅ 适用于多字段拼接场景。


7. DecimalFormat —— 复杂格式化推荐

import java.text.DecimalFormat;

Integer num = 1234567;
DecimalFormat df = new DecimalFormat("#,###");
String str = df.format(num);
System.out.println(str); // 输出:1,234,567

优点

  • 支持复杂数字格式(货币、百分比等)
  • 国际化支持好

📌 更多格式

DecimalFormat df1 = new DecimalFormat("00000");     // 补零
DecimalFormat df2 = new DecimalFormat("$#,##0.00"); // 货币

✅ 适合金融、报表等需要复杂格式化的场景。


三、性能对比(从高到低)

方法 性能等级 说明
String.valueOf() / Integer.toString() ⭐⭐⭐⭐⭐ 最快,直接调用
StringBuilder.append() ⭐⭐⭐⭐ 拼接场景最优
String.format() ⭐⭐⭐ 格式化有开销
DecimalFormat ⭐⭐⭐ 灵活但稍慢
+ "" / "" + ⭐⭐ 隐式创建 StringBuilder

四、最佳实践总结

✅ 推荐选择策略

场景 推荐方法
通用转换 String.valueOf(integer)
整数专用 Integer.toString(integer)
格式化输出 String.format()DecimalFormat
字符串拼接 StringBuilder.append()
进制转换 Integer.toString(num, radix)
null 安全处理 String.valueOf()(返回 "null")

五、常见错误与注意事项

错误 正确做法
new String(integer) ❌ 构造函数不接受 Integer
忽略 null 判断 使用 String.valueOf() 安全处理
在循环中用 + "" 改用 StringBuilder

六、一句话总结

首选 String.valueOf(),格式化用 String.format(),拼接用 StringBuilder,进制转换用 Integer.toString(i, radix) —— 理解场景,选择最优方法。