parseInt :
1、返回类型是int
2、同一个字符串,多次调用,返回同一个Integer对象
3、不会空指针,如果用Integer接收,可以自动装箱
public static Integer valueOf(String s) throws NumberFormatException {
// 10: 表示10进制
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);
}
valueOf:
1、返回类型是Integer
2、同一个对象,多次调用,如果返回的数值不在 -128 ~ 127 之间,不是同一个对象
3、返回的数值在 -128 ~ 127 之间,利用到了 cache,速度比 new Integer(“”)更快
public static int parseInt(String s) throws NumberFormatException {
return parseInt(s,10);
}
Integer.parseInt(s) 多次解析同一个字符串得到的int基本类型数据是相等的,可以直接通过“==”进行判断是否相等。
Integer.valueOf(s)多次解析相同的一个字符串时,得到的是Integer类型的对象,得到的对象有时是同一个对象,有时是不同的对象,要根据把s字符串解析的整数值的大小进行决定:如果s字符串对应的整数值在 -128 ~ 127之间, 则解析出的Integer类型的对象是同一个对象;如果s字符串对应的整数值不在-128~127之间,则解析出的Integer类型的对象不是同一个对象。不管对象是否相等,对象中的value值是相等的。