Integer 的 parseInt 和 valueOf 的区别

278 阅读1分钟

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值是相等的。