美文网首页
Java 基础之 valueOf() 与 parseInt()

Java 基础之 valueOf() 与 parseInt()

作者: Tinyspot | 来源:发表于2023-08-31 16:48 被阅读0次

    1. Integer 类型

    1.1 Integer.parseInt(s)

    public static int parseInt(String s) throws NumberFormatException {
        return parseInt(s,10);
    }
    
    1. Integer.parseInt(s) 返回基本类型

    1.2 Integer.valueOf(s)

    public static Integer valueOf(String s) throws NumberFormatException {
        return Integer.valueOf(parseInt(s, 10));
    }
    
    public static Integer valueOf(int i) {
        if (i >= Integer.IntegerCache.low && i <= Integer.IntegerCache.high)
            return Integer.IntegerCache.cache[i + (-Integer.IntegerCache.low)];
        return new Integer(i);
    }
    
    private static class IntegerCache {
        static final int low = -128;
        static final int high;
        static final Integer cache[];
    }
    
    1. Integer.valueOf(s) 返回的是 Integer 对象
    2. Integer.valueOf(s)会缓存-128 ~ 127范围的整型数字

    2. Long 类型

    2.1 Long.parseLong(s)

    public static long parseLong(String s) throws NumberFormatException {
        return parseLong(s, 10);
    }
    
    1. Long.valueOf(s)返回的是基本数据类型long
    2. 若只需转换为基础类型,用 Long.parseLong 性能较好

    2.2 Long.valueOf(s) 源码

    public static Long valueOf(String s) throws NumberFormatException {
        return Long.valueOf(parseLong(s, 10));
    }
    
    public static Long valueOf(long l) {
        final int offset = 128;
        if (l >= -128 && l <= 127) { // will cache
            return Long.LongCache.cache[(int)l + offset];
        }
        return new Long(l);
    }
    
    1. Long.valueOf(s) 返回的是包装类Long
    2. 对 -128~127 的long类型的数据封装成静态对象数组,下次取的时候返回的是已缓存的对象的引用
    3. Long.valueOf(s)仍然调用的是Long.parseLong("")

    相关文章

      网友评论

          本文标题:Java 基础之 valueOf() 与 parseInt()

          本文链接:https://www.haomeiwen.com/subject/ewyzmdtx.html