核心一句话Integer.toString() 是将 int 值或 Integer 对象转换为字符串的标准方法,支持十进制和指定进制转换,是字符串与整数互转中最常用的方法之一。


一、方法定义(两种重载形式)

✅ 1. public static String toString(int i)

  • 功能:将 int 基本类型转换为十进制字符串。
  • 参数i — 要转换的整数。
  • 返回值:表示该整数的十进制字符串。
  • 异常:无。

✅ 2. public static String toString(int i, int radix)

  • 功能:将 int 值按指定进制(radix)转换为字符串。
  • 参数
    • i:要转换的整数。
    • radix:进制基数(2 ≤ radix ≤ 36)。
  • 返回值:指定进制下的字符串表示。
  • 异常:如果 radix < 2radix > 36,返回十进制字符串(不会抛异常,但行为可能不符合预期)。

二、功能说明

功能 说明
基础转换 int 转为 String,如 123 → "123"
进制支持 支持 2~36 进制转换(如二进制、八进制、十六进制)
负数处理 自动添加负号 -,如 -100 → "-100"
静态方法 无需创建对象,直接调用

三、示例代码

✅ 示例 1:基本用法(十进制)

int num = 456;
String str = Integer.toString(num);
System.out.println(str); // 输出:"456"

✅ 示例 2:负数转换

int negative = -100;
String str = Integer.toString(negative);
System.out.println(str); // 输出:"-100"

✅ 示例 3:指定进制转换

int num = 255;

// 二进制
System.out.println(Integer.toString(num, 2));  // "11111111"

// 八进制
System.out.println(Integer.toString(num, 8));  // "377"

// 十六进制
System.out.println(Integer.toString(num, 16)); // "ff"

// 三十六进制(最大支持)
System.out.println(Integer.toString(1000, 36)); // "rs"

✅ 示例 4:进制边界测试

System.out.println(Integer.toString(10, 1));   // "10"(radix无效,返回十进制)
System.out.println(Integer.toString(10, 37));  // "10"(同上)

⚠️ 注意:radix 超出 [2,36] 范围时,不会抛异常,但会默认使用十进制。


四、使用技巧

🔧 技巧 1:快速转十六进制(替代 toHexString

int color = 255;
String hex = Integer.toString(color, 16).toUpperCase(); // "FF"

🔧 技巧 2:补零格式化(结合 String.format

int num = 7;
String padded = String.format("%04d", num); // "0007"
// 或使用 toString + 补零逻辑

🔧 技巧 3:用于日志、拼接、JSON 序列化前的准备

String log = "User ID: " + Integer.toString(userId);

🔧 技巧 4:与 parseInt 配合实现进制转换工具

// 二进制字符串转十六进制
String bin = "1101";
String hex = Integer.toString(Integer.parseInt(bin, 2), 16); // "d"

五、常见错误

❌ 错误 1:误以为 radix 越界会抛异常

String result = Integer.toString(100, 1); // 不会报错,返回 "100"

✅ 正确做法:手动校验 radix 范围:

if (radix < 2 || radix > 36) {
    throw new IllegalArgumentException("Radix must be between 2 and 36");
}

❌ 错误 2:混淆 toString(int)toString() 实例方法

Integer num = 100;
String s1 = num.toString();           // 实例方法
String s2 = Integer.toString(num);    // 静态方法,推荐
String s3 = Integer.toString(100);    // 直接传 int

✅ 建议:优先使用静态方法,避免装箱。


六、注意事项

注意点 说明
线程安全 静态方法,无状态,线程安全
⚠️ null 处理 Integer.toString(null) 会编译报错(参数是 int),不会出现 NullPointerException
⚠️ 性能 极快,但高频调用建议缓存结果
⚠️ 进制字符集 1035 使用 az(小写),如 35 → "z"
⚠️ 自动装箱避免 不要写 Integer.toString(new Integer(100)),直接 Integer.toString(100)

七、最佳实践

✅ 1. 优先使用 Integer.toString(int) 而非字符串拼接

// ❌ 低效(触发 StringBuilder)
String s = "" + 123;

// ✅ 推荐
String s = Integer.toString(123);

✅ 2. 在日志、配置、序列化中统一使用此方法

logger.info("Count: " + Integer.toString(count));

✅ 3. 进制转换时明确 radix 合法性

public static String toBase(int num, int base) {
    if (base < 2 || base > 36) {
        throw new IllegalArgumentException("Base must be 2-36");
    }
    return Integer.toString(num, base);
}

✅ 4. 避免重复调用(性能敏感场景)

// ❌ 多次调用
for (int i = 0; i < 1000; i++) {
    System.out.println(Integer.toString(value));
}

// ✅ 缓存结果
String strValue = Integer.toString(value);
for (int i = 0; i < 1000; i++) {
    System.out.println(strValue);
}

八、性能优化建议

场景 建议
单次转换 Integer.toString() 性能极佳
高频调用 缓存结果,避免重复转换
大量数字 考虑使用 StringBuilder 批量处理
固定格式 使用 String.format()DecimalFormat
替代方案 对于小整数(-3 ~ 10),JVM 可能缓存字符串,但无需特别优化

💡 Integer.toString() 内部使用高效的数字转字符串算法,通常无需手动优化。


九、源码简析(JDK 8+)

public static String toString(int i) {
    if (i == Integer.MIN_VALUE)
        return "-2147483648";
    int size = (i < 0) ? stringSize(-i) + 1 : stringSize(i);
    char[] buf = new char[size];
    getChars(i, size, buf);
    return new String(buf, true);
}
  • 使用字符数组预分配,避免频繁扩容。
  • 特殊处理 MIN_VALUE(避免取反溢出)。
  • 高效的 getChars() 方法逐位生成字符。

十、与其他方法对比

方法 说明 推荐场景
Integer.toString(i) 静态方法,高效 ✅ 推荐,通用转换
String.valueOf(i) 内部调用 Integer.toString(i) 可用,语义更广
"" + i 字符串拼接,触发 StringBuilder ❌ 不推荐,性能差
new Integer(i).toString() 创建对象,再调用实例方法 ❌ 已废弃,避免使用

结论:Integer.toString(i) 是最直接、最高效的选择


十一、总结:快速掌握要点 ✅

项目 内容
核心作用 int 转为 String
主要重载 toString(int)toString(int, radix)
进制支持 2 ~ 36 进制(如二进制、十六进制)
是否安全 线程安全,无异常(radix 越界不报错)
性能 极高,推荐用于高频转换
null 处理 参数为 int,不存在 null 问题
最佳实践 避免装箱、缓存结果、校验 radix
替代方法 String.valueOf(i) 可用,""+i 避免

🎯 一句话总结:

Integer.toString() 是将整数转为字符串的首选方法,高效、安全、支持多进制,适用于几乎所有整数转字符串场景,使用时注意进制范围校验即可。