Long.toString()
是 Java 中 java.lang.Long
类提供的静态方法,用于将 long
值或 Long
对象转换为字符串表示形式。
重载方法
// 1. 将 long 值转为十进制字符串
public static String toString(long i)
// 2. 将 long 值按指定进制转换为字符串
public static String toString(long i, int radix)
// 3. Long 对象的实例方法(继承自 Number)
public String toString()
功能说明
方法 | 功能 |
---|---|
toString(long i) |
将 long 整数转换为十进制字符串 |
toString(long i, int radix) |
将 long 整数按指定进制(2~36)转换为字符串 |
toString() (实例方法) |
返回 Long 对象的字符串表示(即其 longValue() 的十进制字符串) |
示例代码
1. 基本使用
// 十进制转换
long num = 123456789L;
String str1 = Long.toString(num);
System.out.println(str1); // 输出: 123456789
// 负数
String str2 = Long.toString(-987654321L);
System.out.println(str2); // 输出: -987654321
2. 指定进制转换
long num = 255;
// 二进制
String binary = Long.toString(num, 2);
System.out.println("Binary: " + binary); // 输出: 11111111
// 八进制
String octal = Long.toString(num, 8);
System.out.println("Octal: " + octal); // 输出: 377
// 十六进制
String hex = Long.toString(num, 16);
System.out.println("Hex: " + hex); // 输出: ff
// 三十六进制(最大支持)
String base36 = Long.toString(1234, 36);
System.out.println("Base36: " + base36); // 输出: ya
3. Long 对象转换
Long longObj = Long.valueOf(999);
String str = longObj.toString();
System.out.println(str); // 输出: 999
使用技巧
1. 快速进制转换
// 快速获取二进制、八进制、十六进制字符串
String bin = Long.toString(value, 2);
String oct = Long.toString(value, 8);
String hex = Long.toString(value, 16).toUpperCase(); // 转大写
2. 与包装类结合使用
Long num = 100L;
String s = num.toString(); // 简洁写法
3. 格式化输出(配合其他方法)
// 添加千位分隔符(需额外处理)
String formatted = String.format("%,d", 123456789L);
// 但 Long.toString 本身不支持格式化
常见错误
❌ 错误1:进制参数超出范围
// 错误:radix < 2 或 > 36
String result = Long.toString(100, 1); // 不推荐,会使用 10
String result = Long.toString(100, 37); // 不推荐,会使用 10
// 正确做法:确保 radix 在 2~36 范围内
String result = Long.toString(100, 16); // OK
❌ 错误2:null 值调用实例方法
Long value = null;
// String str = value.toString(); // 抛出 NullPointerException
String str = String.valueOf(value); // 推荐:返回 "null"
❌ 错误3:混淆 toString()
与 toBinaryString()
等
// 错误:以为 toString(2) 是二进制专用方法
// 实际:Integer.toBinaryString() 更直观
String bin1 = Long.toString(8, 2); // 正确但不够直观
String bin2 = Long.toBinaryString(8); // 更清晰
注意事项
- 线程安全:
Long.toString()
是静态方法,无状态,线程安全。 - null 处理:只能对非 null 的
Long
对象调用toString()
,否则抛NullPointerException
。 - 性能:每次调用都会创建新的
String
对象,不可变。 - 进制范围:
radix
参数应在 2~36 之间,否则默认使用 10(十进制)。 - 负数处理:自动添加负号
-
,无需额外处理。
最佳实践与性能优化
✅ 最佳实践
场景 | 推荐做法 |
---|---|
一般转换 | Long.toString(longValue) |
null 安全转换 | String.valueOf(longValue) 或 Objects.toString() |
二进制输出 | Long.toBinaryString() |
八进制输出 | Long.toOctalString() |
十六进制输出 | Long.toHexString() 或 String.format("%x", value) |
🔧 性能优化建议
避免频繁转换:在循环中尽量缓存字符串结果。
// 不推荐 for (int i = 0; i < 10000; i++) { System.out.println(Long.toString(i)); } // 推荐:如果需要重复使用 String[] cache = new String[10000]; for (int i = 0; i < 10000; i++) { cache[i] = Long.toString(i); }
使用
StringBuilder
拼接StringBuilder sb = new StringBuilder(); sb.append("Value: ").append(Long.toString(value));
考虑
String.valueOf()
的 null 安全性String s = String.valueOf(maybeNullLong); // 安全,返回 "null"
总结
项目 | 说明 |
---|---|
核心功能 | 将 long 值转换为字符串,支持十进制和任意进制(2~36) |
常用场景 | 日志输出、数据序列化、进制转换、字符串拼接 |
优点 | 简单、高效、支持多进制 |
缺点 | 不支持格式化(如千分位)、null 不安全(实例方法) |
替代方案 | String.valueOf() (null 安全)、String.format() (格式化) |
性能 | 良好,但频繁调用需注意对象创建开销 |
💡 一句话掌握:
Long.toString(long i)
是将 long 转字符串的首选方法;
需要进制转换时用toString(i, radix)
;
处理可能为 null 的 Long 对象时,优先使用String.valueOf()
。