Java Integer缓存池IntegerCache详解

书欣 Java经验 发布时间:2023-01-22 20:24:30 阅读数:6441 1
下文笔者讲述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);
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202301/16743903415490.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者