杰瑞科技汇

Java中int转String有哪些方法?

哪种方法最好?

方法 优点 缺点 推荐度
String.valueOf(int i) 最推荐,代码清晰,性能好,可读性高。 无明显缺点。 ⭐⭐⭐⭐⭐
Integer.toString(int i) 非常推荐,性能最好,是 valueOf 的内部实现。 代码比 valueOf 稍长一点。 ⭐⭐⭐⭐⭐
"" + int 简单直观,适合快速编码。 性能稍差(会创建不必要的 StringBuilder 对象),可读性有争议。 ⭐⭐⭐
String.format() 功能强大,适合格式化输出。 代码冗长,性能稍差,不适合简单的类型转换。 ⭐⭐

使用 String.valueOf() (最推荐)

这是最常用、最清晰、最安全的方法。String.valueOf() 是一个静态方法,它可以将各种基本数据类型(包括 int)和对象转换为字符串。

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

语法:

String str = String.valueOf(int变量);

示例代码:

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

优点:

  • 代码清晰:一眼就能看出意图是将一个值转换为字符串。
  • 性能良好:JVM 对此方法有很好的优化。
  • 可读性高:是许多 Java 开发者首选的方式。

使用 Integer.toString() (性能最佳)

Integerint 的包装类,它提供了一个静态的 toString() 方法,专门用于将 int 转换为 StringString.valueOf(int i) 的内部实现就是调用了 Integer.toString(i)

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

语法:

String str = Integer.toString(int变量);

示例代码:

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

优点:

  • 性能最高:这是最直接、最高效的转换方式,因为它避免了额外的函数调用层次(虽然 valueOf 的差别微乎其微)。
  • 意图明确:直接表明你正在处理 Integer 类型的转换。

缺点:

Java中int转String有哪些方法?-图3
(图片来源网络,侵删)
  • 相比 String.valueOf(),代码多写了 Integer.,对于追求简洁的人来说可能略显冗余,但在性能敏感的场景下,这是首选。

使用空字符串连接 "" + int (简单但不推荐)

这是一种非常简洁的“技巧”,通过将 int 与一个空字符串 进行连接,利用 Java 的自动类型转换机制来得到一个 String

语法:

String str = "" + int变量;

示例代码:

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

底层原理: 当你写 "" + number 时,Java 编译器会将其优化为:

new StringBuilder().append("").append(number).toString();

这会创建一个 StringBuilder 对象,然后进行两次 append 操作,最后调用 toString()

优点:

  • 书写简单:代码最短。

缺点:

  • 性能稍差:每次转换都会创建一个临时的 StringBuilder 对象,对于简单的转换来说,这带来了不必要的开销,在循环中大量使用会显著影响性能。
  • 可读性有争议:一些开发者认为这种方式不够“正式”,可能会让代码意图变得模糊。

使用 String.format() (功能强大)

String.format() 方法功能非常强大,它使用格式化字符串来生成新的字符串,虽然它也可以用来做类型转换,但通常用于更复杂的格式化需求。

语法:

String str = String.format("%d", int变量);

%dint 类型的格式说明符。

示例代码:

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

优点:

  • 功能强大:可以轻松地控制数字的格式,比如补零、千位分隔符等。
    int num = 99;
    // 补零,总宽度为5
    String formattedStr = String.format("%05d", num);
    System.out.println(formattedStr); // 输出: 00099

缺点:

  • 代码冗长:对于简单的类型转换,使用 format 有些杀鸡用牛刀。
  • 性能较差:解析格式化字符串比直接转换要慢。

特殊情况:处理 null

如果你有一个可能为 nullInteger 对象,直接调用其 .toString() 方法会抛出 NullPointerException

Integer numberObject = null;
// 下面的代码会抛出 NullPointerException
// String str = numberObject.toString(); 

这时,String.valueOf() 就体现了它的优势,因为它能正确处理 null

Integer numberObject = null;
String str = String.valueOf(numberObject); // 返回字符串 "null",而不是抛出异常
System.out.println(str); // 输出: null
  1. 日常开发:优先使用 String.valueOf(),它在可读性、安全性和性能之间取得了最好的平衡。
  2. 性能关键代码:如果你对性能有极致追求(例如在非常频繁调用的循环或算法中),可以使用 Integer.toString(),因为它是最快的。
  3. 快速编码/脚本:在非正式或临时的代码中,可以使用 "" + int,但要了解其性能代价。
  4. 格式化需求:当需要对数字进行格式化(如补零、指定宽度等)时,使用 String.format()

对于绝大多数情况,String.valueOf() 是你的最佳选择。

分享:
扫描分享到社交APP
上一篇
下一篇