核心方法
主要有三种方法,其中前两种是最常用和推荐的。

使用 String.valueOf()
这是最常用、最简洁且性能最好的方法之一,它是一个静态方法,专门用于将基本数据类型(如 long, int, double 等)和对象转换为字符串。
语法:
String str = String.valueOf(longValue);
代码示例:
public class LongToStringExample {
public static void main(String[] args) {
long number = 123456789L;
// 使用 String.valueOf()
String str1 = String.valueOf(number);
System.out.println("原始 long 值: " + number);
System.out.println("转换后的 String: " + str1);
System.out.println("转换后的 String 类型: " + str1.getClass().getName());
}
}
优点:

- 简洁易读:代码非常清晰,一眼就能看出意图。
- 性能高:这是 JVM 内部优化的标准方式,通常比
toString()稍快一点点,因为避免了额外的对象检查。 - 健壮性:如果传入的
long变量是null(虽然long是基本类型,不能为null,但其包装类Long可以),String.valueOf(Long)会正确处理,返回字符串"null",而直接调用longObject.toString()longObject为null则会抛出NullPointerException。
使用 Long.toString()
这是另一种非常标准和高效的方法,它调用了 Long 类的静态 toString() 方法。
语法:
String str = Long.toString(longValue);
代码示例:
public class LongToStringExample {
public static void main(String[] args) {
long number = 987654321L;
// 使用 Long.toString()
String str2 = Long.toString(number);
System.out.println("原始 long 值: " + number);
System.out.println("转换后的 String: " + str2);
}
}
优点:

- 语义清晰:明确表示在进行“到字符串”的转换。
- 性能高:与
String.valueOf()性能几乎相同,都是非常优秀的选择。
使用字符串拼接
这是一种非常“取巧”但也很常见的方法,尤其是在老代码或快速原型开发中,当任何类型与字符串()用 号连接时,Java 会自动调用其 toString() 方法。
语法:
String str = "" + longValue;
代码示例:
public class LongToStringExample {
public static void main(String args[]) {
long number = 555555555L;
// 使用字符串拼接
String str3 = "" + number;
System.out.println("原始 long 值: " + number);
System.out.println("转换后的 String: " + str3);
}
}
优点:
- 极其简单:对于初学者来说非常直观。
缺点:
- 性能稍差:每次拼接都会创建一个新的
StringBuilder对象(在 Java 5 之后,JVM 会对这种简单拼接进行优化,但相比前两种方法,仍然有额外的开销)。 - 可读性争议:虽然简单,但在一些追求代码纯粹性的开发者看来,它不如前两种方法“专业”。
- 潜在问题:
longValue变量是null(同样,指其包装类Long),结果会是字符串"null",这可能是你想要的也可能不是。
方法对比与总结
| 方法 | 语法 | 性能 | 可读性 | 推荐度 |
|---|---|---|---|---|
String.valueOf() |
String.valueOf(l) |
非常高 | 非常好 | ⭐⭐⭐⭐⭐ (首选) |
Long.toString() |
Long.toString(l) |
非常高 | 好 | ⭐⭐⭐⭐⭐ (首选) |
| 字符串拼接 | "" + l |
较低 (但有优化) | 简单 | ⭐⭐ (不推荐用于生产代码) |
- 日常开发首选:
String.valueOf()和Long.toString()都是最佳选择,两者在性能和功能上几乎没有区别,你可以根据个人或团队的编码风格来选择,我个人更偏爱String.valueOf(),因为它是一个更通用的转换工具。 - 应避免使用:字符串拼接 (
"" + long) 虽然能工作,但在性能和代码风格上都不如前两种方法,建议避免在性能敏感或要求高质量代码的生产环境中使用。
特殊情况:格式化转换
你不需要一个简单的字符串,而是需要特定格式的字符串,比如带有千位分隔符(逗号)或指定位数,这时可以使用 String.format() 或 DecimalFormat。
使用 String.format()
语法:
String formattedStr = String.format("%,d", longValue);
%d:表示这是一个十进制整数。- 这是一个格式说明符,表示添加本地化的千位分隔符(在中文和英文环境下通常是逗号)。
代码示例:
public class FormattedLongToString {
public static void main(String[] args) {
long largeNumber = 1000000000L;
// 格式化,添加千位分隔符
String formattedStr = String.format("%,d", largeNumber);
System.out.println("原始 long 值: " + largeNumber);
System.out.println("格式化后的 String: " + formattedStr); // 输出: 1,000,000,000
}
}
使用 DecimalFormat
DecimalFormat 提供了更强大的格式化控制。
代码示例:
import java.text.DecimalFormat;
public class DecimalFormatExample {
public static void main(String[] args) {
long price = 1234567L;
// 创建一个模式,#,###.## 表示整数部分用逗号分隔,小数部分保留两位
DecimalFormat decimalFormat = new DecimalFormat("#,###");
String formattedPrice = decimalFormat.format(price);
System.out.println("原始 long 值: " + price);
System.out.println("格式化后的 String: " + formattedPrice); // 输出: 1,234,567
}
}
| 需求 | 推荐方法 | 示例 |
|---|---|---|
| 简单、高效的转换 | String.valueOf() 或 Long.toString() |
String s = String.valueOf(123L); |
| 特定格式(如千位分隔符) | String.format() 或 DecimalFormat |
String s = String.format("%,d", 123456L); |
