Integer IntegerCache源码的示例分析
发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,这篇文章主要介绍Integer IntegerCache源码的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!先看一段测试结果:/*public static void
千家信息网最后更新 2025年11月14日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安全错误
数据库的锁怎样保障安全
江苏hp服务器阵列卡芯片
交罚款服务器维护中
住宿住宿行业网络安全制度
网络技术基础课程是什么意思
网络安全局局长什么级别
剑灵区服务器人多2015
萧山永通集团软件开发
奇安信网络安全大会小姐姐
软件开发中的主要问题
关系型数据库优化总结
郴州市app软件开发培训多少钱
畅捷通t1怎么修改数据库
中国商品诚信数据库电话
网络安全等级分几级
.删除数据库的命令是
怎样的数据库应用系统是好系统
服务器电源防护措施
计算机网络技术专业校企合作
广告投放系统用什么数据库
2022pubg服务器维护时间
内蒙古科技大学软件开发可靠吗
打印服务器维护费用
丽江服务器租用经销商
我的世界mod服务器整合
创建员工管理数据库
服务器线缆组件
高青网络审批软件开发公司
软件开发项目总投资估算表
战争与冲突带来的网络安全
奉贤区企业网络技术服务一体化