杰瑞科技汇

Java int转string有哪些方法?

TL;DR)

方法 代码示例 优点 缺点 推荐度
String.valueOf() String str = String.valueOf(i); 最推荐,简洁、高效,能处理 null 无明显缺点。 ⭐⭐⭐⭐⭐
Integer.toString() String str = Integer.toString(i); 非常推荐,语义清晰,性能高。 不能直接用于 Integer 对象的 null 值。 ⭐⭐⭐⭐⭐
字符串拼接 String str = i + ""; 简单直观,适合快速编码。 性能稍差,会创建不必要的 StringBuilder 对象。 ⭐⭐⭐
String.format() String str = String.format("%d", i); 功能强大,适合格式化输出。 相对啰嗦,仅用于转换时有点“杀鸡用牛刀”。 ⭐⭐

方法详解

String.valueOf(int i) - 最推荐

这是最常用、最安全的方法,它是一个静态方法,可以直接将基本数据类型 int 转换为 String

Java int转string有哪些方法?-图1
(图片来源网络,侵删)

代码示例:

int number = 123;
String str = String.valueOf(number);
System.out.println(str);      // 输出: 123
System.out.println(str.getClass().getName()); // 输出: java.lang.String

优点:

  • 简洁高效:代码非常清晰,并且是专门为此目的设计的,性能很好。
  • 重载方法String.valueOf() 有多个重载版本,可以接受所有基本数据类型(int, double, boolean 等)和 Object 类型,这使得它在处理可能为 nullInteger 对象时也非常安全。
    Integer numberObj = null;
    // String str = numberObj.toString(); // 这里会抛出 NullPointerException
    String safeStr = String.valueOf(numberObj); // 安全,输出 "null" 字符串
    System.out.println(safeStr); // 输出: null

在绝大多数情况下,这是你的首选。

Integer.toString(int i) - 非常推荐

这是 Integer 类中的一个静态方法,功能与 String.valueOf(int) 几乎完全相同,也是将 int 转换为 String 的标准方式。

Java int转string有哪些方法?-图2
(图片来源网络,侵删)

代码示例:

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

优点:

  • 语义清晰Integer.toString() 的名字清楚地表达了“将整数转换为字符串”的意图。
  • 性能优秀:和 String.valueOf() 一样,性能非常高。

String.valueOf() 的细微差别:

  • String.valueOf(int i) 内部就是调用了 Integer.toString(i),所以它们在底层实现上是等价的。
  • String.valueOf() 的重载版本更多,通用性更强,当你不确定变量类型或者处理可能为 null 的包装类对象时,String.valueOf() 更方便。

同样是绝佳选择,可以和 String.valueOf() 互换使用。

Java int转string有哪些方法?-图3
(图片来源网络,侵删)

使用 运算符(字符串拼接)

这是最直观、最“新手友好”的方法,当 int 与一个空字符串 相加时,Java 会自动将 int 隐式转换为 String

代码示例:

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

优点:

  • 极其简单:对于一次性的、简单的转换,代码非常短。

缺点:

  • 性能稍差:在底层,Java 编译器会为你创建一个 StringBuilder 对象来处理这个拼接操作,虽然对于单个转换来说性能差异可以忽略不计,但在循环中进行大量拼接时,性能会明显下降。
    // 编译器实际生成的代码类似这样:
    String str = new StringBuilder().append(number).append("").toString();
  • 可读性稍差:在一些复杂的表达式中,过多使用 进行拼接可能会降低代码的可读性。

适合在简单脚本或非性能关键路径的代码中使用,不推荐在需要高性能的循环或复杂逻辑中使用。

String.format() - 功能强大

String.format() 方法使用格式化字符串来创建新的 String,它不仅可以用来转换,还可以进行格式化,比如控制小数位数、补零等。

代码示例:

int number = 100;
String str = String.format("%d", number);
System.out.println(str); // 输出: 100

优点:

  • 功能强大:如果转换的同时需要进行格式化,这是最佳选择。
    int num = 5;
    // 格式化为固定位数,不足补零
    String formattedStr = String.format("%05d", num); // 输出: 00005
    System.out.println(formattedStr);

缺点:

  • 略显啰嗦:如果仅仅是做一个简单的类型转换,使用 String.format() 有些小题大做,代码不如前几种方法简洁。

当你需要格式化输出时,这才是正确的工具,如果只是简单的类型转换,则不推荐。


性能对比

如果你对性能有极致追求,这里有一个简单的性能排序(从快到慢):

  1. Integer.toString(int)String.valueOf(int) (两者性能几乎一样,都是最快的)
  2. 字符串拼接 (比前两者稍慢,因为涉及 StringBuilder 的创建和销毁)

在现代 JVM 中,这种性能差异通常只有在循环数百万次时才会变得明显,对于 99% 的应用场景,选择前两种方法中的任何一种都足够了。

  • 首选 String.valueOf(int):因为它最通用、最安全,能处理 null,并且性能极佳。
  • 次选 Integer.toString(int):如果你明确知道你处理的是一个原始 int 类型,并且喜欢更明确的语义,这也是一个完美的选择。
  • 避免在性能关键代码中使用 拼接:虽然简单,但在循环或高频代码中应避免。
  • 仅在需要格式化时使用 String.format():它是格式化输出的利器,但不是简单的类型转换工具。
分享:
扫描分享到社交APP
上一篇
下一篇