int与String相互转换常用API

int → String 转换的 API

1. String.valueOf(int i) (推荐)

int num = 123;
String s = String.valueOf(num);  // "123"
  • 优点:最常用,代码清晰,性能好
  • null安全:如果传入 null 会返回 "null"

2. Integer.toString(int i)

int num = 123;
String s = Integer.toString(num);  // "123"
  • String.valueOf() 功能相同,底层实现也类似
  • 是 Integer 类的静态方法

3. 字符串拼接 (隐式转换)

int num = 123;
String s = "" + num;  // "123"
String s2 = num + "";  // "123"
  • 优点:代码简洁
  • 缺点:性能稍差,因为会创建 StringBuilder 对象

4. String.format()

int num = 123;
String s = String.format("%d", num);  // "123"
  • 优点:可以格式化数字(如补零、指定宽度等)
  • 缺点:性能较差

5. new StringBuilder().append(int).toString()

int num = 123;
String s = new StringBuilder().append(num).toString();  // "123"
  • 一般不直接使用,但在循环中拼接字符串时会用到

String → int 转换的 API

1. Integer.parseInt(String s) (推荐)

String s = "123";
int num = Integer.parseInt(s);  // 123
  • 最常用的方法
  • 异常:如果字符串不是有效数字,抛出 NumberFormatException

2. Integer.valueOf(String s)

String s = "123";
Integer integerObj = Integer.valueOf(s);  // Integer 对象
int num = integerObj.intValue();  // 123
// 或者直接拆箱
int num2 = Integer.valueOf(s);  // 自动拆箱
  • 返回 Integer 对象而不是基本类型 int
  • 有缓存机制(-128 到 127)

3. 带进制的转换

// 二进制转十进制
int binary = Integer.parseInt("1010", 2);  // 10

// 十六进制转十进制
int hex = Integer.parseInt("A", 16);  // 10

// 八进制转十进制
int octal = Integer.parseInt("12", 8);  // 10

4. 处理异常的安全方法

public static int safeParseInt(String s, int defaultValue) {
    try {
        return Integer.parseInt(s);
    } catch (NumberFormatException e) {
        return defaultValue;
    }
}

// 使用
int num = safeParseInt("123abc", 0);  // 返回 0

性能比较(int → String)

从快到慢:

  1. Integer.toString(int i) / String.valueOf(int i)
  2. 字符串拼接
  3. String.format()

完整示例

public class IntStringConversion {
    public static void main(String[] args) {
        // int → String
        int num = 12345;
        
        String s1 = String.valueOf(num);
        String s2 = Integer.toString(num);
        String s3 = "" + num;
        String s4 = String.format("%d", num);
        
        System.out.println(s1);  // "12345"
        System.out.println(s2);  // "12345"
        System.out.println(s3);  // "12345"
        System.out.println(s4);  // "12345"
        
        // String → int
        String str = "6789";
        
        int n1 = Integer.parseInt(str);
        int n2 = Integer.valueOf(str);  // 自动拆箱
        
        System.out.println(n1);  // 6789
        System.out.println(n2);  // 6789
    }
}

总结

  • int → String:推荐使用 String.valueOf(int i)
  • String → int:推荐使用 Integer.parseInt(String s)
  • 注意处理 NumberFormatException 异常
posted @ 2025-12-04 09:48  Nickey103  阅读(18)  评论(0)    收藏  举报