Long类型简介:
Long 是 对象类型,默认值为null,有最大值和最小值的概念
Long类型可通过相应的方法longValue转换为long数值
在日常开发中,Long类型避免和数据库的主键映射,因为他存在null值,可能会产生相应的异常现象
由于Long是对象类型,所以我们可以使用new的方式定义一个Long类型
Integer类型简介:
Integer是int的包装类型,默认值为null
Integer类型可以使用intValue,提取出其中的int值
我们可以使用new 的方式定义一个Integer类型
下文笔者讲述Java中Long和Integer缓存的简介说明,如下所示:
先判断下下面代码的输出结果
1:----------------------------------------------
Long a = Long.valueOf(127);
Long b = Long.valueOf(127);
System.out.println(a == b);
2:---------------------------------------------------
Long a = Long.valueOf(128);
Long b = Long.valueOf(128);
System.out.println(a == b);
--------------------------------------------------------
1:true
2:false
Long类型的源码
我们可以通过Long类型的valueOf的源码,看出在JVM中缓存着指定范围的数据,
具体的可查阅以下代码, LongCache...
public static Long valueOf(long l) {
final int offset = 128;
if (l >= -128 && l <= 127) { // will cache
return LongCache.cache[(int)l + offset];
}
return new Long(l);
}
private static class LongCache {
private LongCache(){}
static final Long cache[] = new Long[-(-128) + 127 + 1];
static {
for(int i = 0; i < cache.length; i++)
cache[i] = new Long(i - 128);
}
}
从以上代码上,我们可以看出
"-128到127间的值"放入到一个缓存数组中
转自: