杰瑞科技汇

java long 转 string

方法 描述 优点 缺点 推荐场景
Long.toString(long l) Long 类的静态方法,专门用于转换。 最直接、最常用,代码可读性高。 无明显缺点。 绝大多数情况下的首选
String.valueOf(long l) String 类的静态方法,重载形式支持所有基本类型。 统一的 API,当需要处理多种类型时很方便。 功能与 Long.toString() 完全相同,只是来源类不同。 当需要将多种基本类型(int, double, boolean 等)统一转为 String 时。
"" + long 使用字符串连接操作符。 非常简洁,代码量最少。 性能稍差,会创建一个临时的 StringBuilder 对象。 代码极简、非性能关键的场景。
String.format() 使用格式化字符串。 功能强大,可以格式化数字(如补零、千分位分隔符)。 代码最冗长,对于简单转换是“杀鸡用牛刀”。 需要对输出格式有特殊要求时。

使用 Long.toString(long l) - 最推荐

这是最直接、最符合语义的方法。Long 类提供了一个静态方法 toString(),专门用于将 long 值转换为 String 表示。

java long 转 string-图1
(图片来源网络,侵删)

语法:

String str = Long.toString(longValue);

示例代码:

long number = 123456789L;
String str = Long.toString(number);
System.out.println(str);          // 输出: 123456789
System.out.println(str.getClass().getName()); // 输出: java.lang.String
// 处理负数
long negativeNumber = -987654321L;
String negativeStr = Long.toString(negativeNumber);
System.out.println(negativeStr);  // 输出: -987654321

优点:

  • 意图明确: 代码清楚地表明了将一个 long 转换为 String 的意图。
  • 性能良好: 这是 JVM 内部优化的标准方法,效率很高。
  • 可读性强: 是 Java 开发者最熟悉和最容易理解的写法。

使用 String.valueOf(long l) - 通用之选

String 类提供了 valueOf() 方法的一系列重载,用于将各种基本数据类型(char, int, long, double, boolean 等)转换为 String

java long 转 string-图2
(图片来源网络,侵删)

语法:

String str = String.valueOf(longValue);

示例代码:

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

优点:

  • API 统一: 如果你有一段代码需要处理多种基本类型并转换为 String,使用 String.valueOf() 可以保持 API 的一致性。
  • 功能相同: 对于 long 类型,它的底层实现和 Long.toString() 是一样的,性能和结果没有区别。

Long.toString() 的选择:

java long 转 string-图3
(图片来源网络,侵删)
  • 如果你的代码只关心 longString,使用 Long.toString() 更能体现具体操作。
  • 如果你的代码是一个通用方法,可能需要处理多种类型,或者为了保持风格统一,String.valueOf() 是一个很好的选择。

使用字符串连接 "" + long - 简便写法

这是一种非常简洁的写法,利用了 Java 的字符串连接特性,当任何类型与 String 进行 操作时,JVM 会自动调用该类型的 toString() 方法。

语法:

String str = "" + longValue;

示例代码:

long number = 123456789L;
String str = "" + number;
System.out.println(str); // 输出: 123456789

内部工作原理: 这个操作实际上会被编译器优化为:

// 编译器生成的等价代码
String str = new StringBuilder().append("").append(number).toString();

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

优点:

  • 极其简洁: 键盘敲击最少,适合在快速编码或代码量极少的场景(如日志输出)中使用。

缺点:

  • 性能开销: 相比前两种方法,它会多创建一个 StringBuilder 实例,在循环等高频调用场景下,会带来不必要的性能开销。
  • 可读性争议: 一些开发者认为这种写法不够“纯粹”,因为它混合了类型转换和字符串操作。

使用 String.format() - 格式化之王

当你不仅需要转换,还需要对数字的格式进行特殊控制时,String.format() 是最佳选择,它提供了类似 C 语言 printf 的强大格式化功能。

语法:

String str = String.format("%d", longValue);

%dlongint 类型的格式说明符。

示例代码:

long number = 123456789L;
// 1. 基本转换
String str1 = String.format("%d", number);
System.out.println(str1); // 输出: 123456789
// 2. 补零(格式化为10位,不足前面补0)
String str2 = String.format("%010d", number);
System.out.println(str2); // 输出: 000123456789
// 3. 添加千分位分隔符
String str3 = String.format("%,d", number);
System.out.println(str3); // 输出: 123,456,789
// 4. 格式化为16进制
String str4 = String.format("%x", number);
System.out.println(str4); // 输出: 75bcd15

优点:

  • 功能强大: 可以轻松实现补零、千分位、进制转换等复杂格式化需求。
  • 灵活性高: 是处理复杂输出格式的标准工具。

缺点:

  • 语法冗长: 对于简单的转换,String.format() 的写法比前三种方法都要啰嗦。
  • 性能开销: 格式化解析本身比直接转换要慢。

性能对比

在大多数现代 JVM 上,Long.toString()String.valueOf() 的性能几乎没有差别,都是最优选择。"" + long 的性能略差,而 String.format() 是最慢的。

  • 日常开发、追求代码清晰和性能:请使用 Long.toString(long)
  • 需要处理多种数据类型或保持 API 风格统一:请使用 String.valueOf(long)
  • 写代码图省事,且对性能不敏感(如单次日志打印):可以使用 "" + long
  • 需要对数字进行格式化(如补零、千分位):请使用 String.format()
分享:
扫描分享到社交APP
上一篇
下一篇