Java Integer缓存池IntegerCache详解
下文笔者讲述IntegerCache详解说明,如下所示
IntegerCache示例简介
public class IntegerCacheExample {
public static void main(String[] args) {
Integer a = 127;
Integer b = 127;
System.out.printf("a==b: %s.\n", a == b);
Integer c = 128;
Integer d = 128;
System.out.printf("c==d: %s.\n", c == d);
}
}
------运行以上代码,将输出以下信息------
a==b: true.
c==d: false.
Integer缓存池----IntegerCache简介
缓存以支持JLS要求
-128 和 127(含)之间值的自动装箱的对象标识语义
缓存在第一次使用时初始化
缓存大小由
-XX:AutoBoxCacheMax=<size> 选项控制。
在VM初始化过程中
java.lang.Integer.IntegerCache.high属性
可能会被设置并保存在sun.misc.VM类的私有系统属性中
IntegerCache注意事项:
IntegerCache大小默认值由 -128~127之间,其大小由-XX:AutoBoxCacheMax调整
通过以上IntegerCache我们可以判断出Integer之间的判断
IntegerCache示例分享
public class IntegerCacheExample {
public static void main(String[] args) {
Integer a = 127;
Integer b = 127;
// System.out.printf("a==b: %s.\n", a == b);
Integer c = 128;
Integer d = 128;
// System.out.printf("c==d: %s.\n", c == d);
}
}
Integer x = num; // 优化为 Integer x = Integer.valueOf(num);
Integr.valueOf源码
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


