Java转换字符串为int:Integer.valueOf()和Integer.parseInt()

时间:2022-06-01 21:57:35

Java里转换字符串为整型有两种方式:

  • Integer.valueOf(String str)
  • Integer.parseInt(String str)

示例

String str = "100";
Integer i1 id= Integer.valueOf(str);
int x2 = Integer.parseInt(str);

从方法的签名看,两者不同的地方是它们返回的类型不一样。valueOf返回的是包装类型Integer,而parseInt返回的基本类型int。

查看valueOf的实现:

public static Integer valueOf(String s) throws NumberFormatException {
    return Integer.valueOf(parseInt(s, 10));
}

valueOf实质是调用parseInt,然后再调用Integer.valueOf(int i);

进入Integer.valueOf(int i)

public static Integer valueOf(int i) {
    if (i >= IntegerCache.low && i <= IntegerCache.high)
        return IntegerCache.cache[i + (-IntegerCache.low)];
    return new Integer(i);
}

其中 IntegerCache.low = -128,IntegerCache.high=127。当i值在-128到127的范围返回的是缓存在IntegerCache里的对象,超出范围返回新的整型。

所以使用Integer.valueOf返回的Integer型数据,建议不要直接做相等比较

System.out.println(Integer.valueOf(20) == Integer.valueOf(20));  //true
System.out.println(Integer.valueOf(200) == Integer.valueOf(200)); //false

总结

Integer.valueOf(str) 等同于new Integer(Integer.parseInt(str))。