他们返回类型的不同是最大的原因
- static Integer valueOf(String s):返回保持指定的 String 的值的 Integer 对象
- static Integer valueOf(int i) :返回一个表示指定的 int 值的 Integer 实例
- static int parseInt(String s):将字符串参数作为有符号的十进制整数进行分析
从返回值可以看出他们的区别
- parseInt()返回的是基本类型int,而valueOf()返回的是包装类Integer
- Integer是可以使用对象方法的 ,而int类型就不能和Object类型进行互相转换
源码
public final class Integer extends Number implements Comparable<Integer> {
public static Integer valueOf(String s) throws NumberFormatException {
return Integer.valueOf(parseInt(s, 10));
}
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
public static int parseInt(String s) throws NumberFormatException {
return parseInt(s,10);
}
}
从源码分析,valueOf(String s) 底层主要依靠 valueOf(int i) 和 parseInt(String s)实现