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);         // 更清晰

注意事项

  1. 线程安全Long.toString() 是静态方法,无状态,线程安全。
  2. null 处理:只能对非 null 的 Long 对象调用 toString(),否则抛 NullPointerException
  3. 性能:每次调用都会创建新的 String 对象,不可变。
  4. 进制范围radix 参数应在 2~36 之间,否则默认使用 10(十进制)。
  5. 负数处理:自动添加负号 -,无需额外处理。

最佳实践与性能优化

✅ 最佳实践

场景 推荐做法
一般转换 Long.toString(longValue)
null 安全转换 String.valueOf(longValue)Objects.toString()
二进制输出 Long.toBinaryString()
八进制输出 Long.toOctalString()
十六进制输出 Long.toHexString()String.format("%x", value)

🔧 性能优化建议

  1. 避免频繁转换:在循环中尽量缓存字符串结果。

    // 不推荐
    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);
    }
    
  2. 使用 StringBuilder 拼接

    StringBuilder sb = new StringBuilder();
    sb.append("Value: ").append(Long.toString(value));
    
  3. 考虑 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()