Integer IntegerCache源码的示例分析
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要介绍Integer IntegerCache源码的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!先看一段测试结果:/*public static void
千家信息网最后更新 2026年11月04日Integer IntegerCache源码的示例分析
这篇文章主要介绍Integer IntegerCache源码的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
先看一段测试结果:
/*public static void main(String[] args) { Integer a = 128, b = 128; Integer c = 127, d = 127; System.out.println(a == b);//false System.out.println(c == d);//true }*/ /*public static void main(String[] args) { Integer int1 = Integer.valueOf("100"); Integer int2 = Integer.valueOf("100"); System.out.println(int1 == int2);//true }*/ public static void main(String[] args) { Integer int1 = Integer.valueOf("300"); Integer int2 = Integer.valueOf("300"); System.out.println(int1 == int2);//false }JDK的源码如下:
public static Integer valueOf(String s) throws NumberFormatException { return Integer.valueOf(parseInt(s, 10)); }public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }发现里面另有玄机,多了个IntegerCache类:
private static class IntegerCache { static final int low = -128; static final int high; static final Integer cache[]; static { // high value may be configured by property int h = 127; String integerCacheHighPropValue = sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high"); if (integerCacheHighPropValue != null) { try { int i = parseInt(integerCacheHighPropValue); i = Math.max(i, 127); // Maximum array size is Integer.MAX_VALUE h = Math.min(i, Integer.MAX_VALUE - (-low) -1); } catch( NumberFormatException nfe) { // If the property cannot be parsed into an int, ignore it. } } high = h; cache = new Integer[(high - low) + 1]; int j = low; for(int k = 0; k < cache.length; k++) cache[k] = new Integer(j++); // range [-128, 127] must be interned (JLS7 5.1.7) assert IntegerCache.high >= 127; } private IntegerCache() {} }原来Integer把-128到127(可调)的整数都提前实例化了。
这就解释了答案,原来你不管创建多少个这个范围内的Integer用ValueOf出来的都是同一个对象。
但是为什么JDK要这么多此一举呢? 我们仔细想想, 淘宝的商品大多数都是100以内的价格, 一天后台服务器会new多少个这个的Integer, 用了IntegerCache,就减少了new的时间也就提升了效率。同时JDK还提供cache中high值得可配置,
这无疑提高了灵活性,方便对JVM进行优化。
以上是"Integer IntegerCache源码的示例分析"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
源码
示例
分析
内容
篇文章
多此一举
价值
价格
兴趣
另有
同时
后台
商品
实例
对象
小伙
小伙伴
效率
整数
时间
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
山东特亿宝互联网科技有限公司
互联网 科技
互联网科技的发展
九亚互联网科技
未来的互联网科技
广州互联网络科技有限公司
腾讯科技 互联网女皇
电子科技大学互联网
成都狮子座互联网科技
互联网科技股有哪些
深圳前海聚择互联网科技有限公司
互联网教育科技公司vipkid
互联网校园科技培训
互联网金融中的现代科技
武汉健翔互联网络科技有限公司
广西互联网科技孵化中心
西安小鹰速贷互联网科技有限公司
美国互联网科技实力
富国互联网金融科技混合基金
广州梦谷互联网科技有限公司领导
善班互联网科技
互联网科技排名
鑫亿盛互联网科技
互联网科技缩写
菲比寻常互联网科技
互联网科技有限公司 翻译
河南猎农互联网科技有限公司
卓翼科技产业互联网合作
上海科技产业互联网平台
北京市互联网新科技