3 回答
TA贡献1797条经验 获得超4个赞
valueOf内部就用了parseInt,区别在于parseInt直接返回原始int类型数据;而valueOf又装了下箱,返回Integer类型。
还有一个区别,parseInt期待输入是String,而valueOf不是
感受下代码:
public static int parseInt(String s) throws NumberFormatException {
return parseInt(s,10);
}
public static Integer valueOf(String s, int radix) throws NumberFormatException {
return Integer.valueOf(parseInt(s,radix));
}
public static Integer valueOf(String s) throws NumberFormatException {
return Integer.valueOf(parseInt(s, 10));
}
TA贡献1829条经验 获得超7个赞
看源码:
//先调用parseInt获得int值,然后封装成Integer对象,注意封装的逻辑,有缓存
public static Integer valueOf(String s) throws NumberFormatException {
return Integer.valueOf(parseInt(s, 10));
}
public static Integer valueOf(int i) {
assert IntegerCache.high >= 127;
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
//直接转换,获得int值
public static int parseInt(String s) throws NumberFormatException {
return parseInt(s,10);
}
综上所述,一般用Integer.parseInt(str),除非你要返回Integer类型,不然还有封装拆箱,性能多少会耗费些。
添加回答
举报