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); }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。