1. Integer 类型
1.1 Integer.parseInt(s)
public static int parseInt(String s) throws NumberFormatException {
return parseInt(s,10);
}
-
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[];
}
-
Integer.valueOf(s)
返回的是 Integer 对象
-
Integer.valueOf(s)
会缓存-128 ~ 127范围的整型数字
2. Long 类型
2.1 Long.parseLong(s)
public static long parseLong(String s) throws NumberFormatException {
return parseLong(s, 10);
}
-
Long.valueOf(s)
返回的是基本数据类型long
- 若只需转换为基础类型,用 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);
}
-
Long.valueOf(s)
返回的是包装类Long
- 对 -128~127 的long类型的数据封装成静态对象数组,下次取的时候返回的是已缓存的对象的引用
-
Long.valueOf(s)
仍然调用的是Long.parseLong("")
网友评论