美文网首页
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