杰瑞科技汇

Java int 如何转为字符串?

在 Java 中,将 int 类型转换为 String 类型有多种方法,每种方法都有其适用场景和特点,以下是几种最常用和推荐的方法:

Java int 如何转为字符串?-图1
(图片来源网络,侵删)

使用 String.valueOf(int i) - 最推荐

这是最常用、最直接的方法,它是一个静态方法,专门用于将基本数据类型(如 int, double, boolean 等)转换为 String

特点:

  • 代码简洁: 可读性非常高。
  • 性能优秀: 这是 Java 语言设计者提供的标准转换方式,通常经过了高度优化。
  • 非空安全: 参数是基本类型 int,永远不会为 null,因此不会抛出 NullPointerException

示例代码:

int number = 123;
String str = String.valueOf(number);
System.out.println(str);      // 输出: 123
System.out.println(str.getClass().getName()); // 输出: java.lang.String
// 处理负数
int negativeNumber = -456;
String negativeStr = String.valueOf(negativeNumber);
System.out.println(negativeStr); // 输出: -456

使用 Integer.toString(int i) - 同样推荐

Integerint 的包装类。Integer.toString() 方法是专门用来将 int 转换为 String 的。

Java int 如何转为字符串?-图2
(图片来源网络,侵删)

特点:

  • 代码简洁:String.valueOf() 一样简洁。
  • 性能优秀:String.valueOf() 在底层实现上几乎完全相同,性能差异可以忽略不计。
  • 意图明确: 直接表明了将一个整数转换为字符串的意图。

示例代码:

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

使用空字符串拼接 ("" + i) - 不推荐,但常见

这是一种非常简洁的“技巧”,通过将 int 与一个空字符串 进行拼接,Java 会自动调用 toString() 方法将 int 转换为 String

特点:

  • 代码极简: 代码量最少。
  • 性能较差: 这种方式会创建一个临时的 StringBuilder 对象来完成拼接,相比前两种直接调用的方法,会有轻微的性能开销,在性能敏感的代码或循环中应避免使用。
  • 可读性稍差: 对于不熟悉这个技巧的人来说,意图不如前两种方法明确。

示例代码:

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

使用 String.format() - 适用于格式化场景

如果你需要在转换的同时进行格式化(指定数字的宽度、补零、添加千位分隔符等),String.format() 是最佳选择。

特点:

  • 功能强大: 不仅可以转换,还能按照指定格式进行格式化。
  • 性能开销: 因为涉及格式化解析,性能比前三种方法差,仅在需要格式化时使用。

示例代码:

int number = 42;
// 基本转换
String str1 = String.format("%d", number);
System.out.println(str1); // 输出: 42
// 指定宽度,右对齐,用空格补齐
String str2 = String.format("%5d", number);
System.out.println(str2); // 输出: "   42" (前面有三个空格)
// 指定宽度,左对齐,用空格补齐
String str3 = String.format("%-5d", number);
System.out.println(str3); // 输出: "42   " (后面有三个空格)
// 指定宽度,用0补齐
String str4 = String.format("%05d", number);
System.out.println(str4); // 输出: "00042"
// 添加千位分隔符 (在Java 7+中可用)
String str5 = String.format("%,d", 1234567);
System.out.println(str5); // 输出: "1,234,567"

使用 Integer(int).toString() - 不常用

这种方式首先创建一个 Integer 对象,然后再调用其 toString() 方法,对于从 intString 这是不必要的步骤,因为它多了一次对象创建的开销。

特点:

  • 性能最差: 涉及到装箱操作,会创建一个不必要的 Integer 对象,应尽量避免。
  • 代码冗余: 没有任何优势。

示例代码(不推荐):

int number = 2025;
// 不推荐这样做
String str = new Integer(number).toString();
System.out.println(str); // 输出: 2025

总结与对比

方法 示例 优点 缺点 推荐场景
String.valueOf() String.valueOf(i) 最佳实践,简洁,性能好,意图清晰 无明显缺点 绝大多数情况下的首选
Integer.toString() Integer.toString(i) 最佳实践,简洁,性能好,意图明确 无明显缺点 绝大多数情况下的首选
"" + i "" + i 代码极简 性能稍差(创建StringBuilder),可读性稍差 快速原型、非性能关键代码
String.format() String.format("%d", i) 功能强大,可进行格式化 性能开销大,仅用于格式化 需要格式化输出时
new Integer(i).toString() new Integer(i).toString() 性能最差,代码冗余 几乎从不使用

核心建议

  • 日常开发中,优先使用 String.valueOf(int)Integer.toString(int) 两者在性能和可读性上都非常出色,可以互换使用。
  • 当你需要对数字进行格式化(如补零、加千位分隔符等)时,使用 String.format()
  • 尽量避免使用 "" + inew Integer(i).toString() 的方式。
分享:
扫描分享到社交APP
上一篇
下一篇