尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
关于java中Integer缓存数组的分析
今天发现一个很有趣的事情java中的Integer如果两个变量值大于127就算值相等但是比较其对象则不一致。一、现象分析1、当Integer值为处于[-128127]时候i1和i2,i5和i6这两组对象相同2、当Integer值为处于上述取值范围外的时候i3和i4,i7和i8这两组对象相同3、在2的情况下其对象的值是相等的(equals)。二、原因分析Integer是java原生类我们可以查看其源码进行分析。1、Integer带有一个缓存存放对象当数据处于[-128127]则直接从获取对象否则新建一个Integer对象。2、而IntegerCache是一个静态内部类其缓存cache是一个存放Integer的数组默认大小为1271281256。3、如果用户想修改大小可以调整java.lang.Integer.IntegerCache.high这个指默认127在java变量中调整“-XX:AutoBoxCacheMax”即可。在idea中把jvm中的AutoBoxCacheMax值设置为128运行得到i3i4的值就为true了。4、值得注意的是如果设置JVM里面-XX:AutoBoxCacheMax的值大于127则按设置的作为higt值如果小于等于127则按127来生效。我们验证可以设置AutoBoxCacheMax为50看到运行得到i1i1的值就为true证明AutoBoxCacheMax值依旧是127。三、总结1、IntegerCache这个缓存机制是把常用的值进行缓存减少对象创建和销毁对资源的占用。2、IntegerCache缓存在第一次使用时初始化而且类对象不被卸载的情况下是不会被GC。3、这个缓存机制也被其他自动封箱对象所实现比如Byte、Short以及Long范围也是[-128,127],但是其最大值是写死为127无法通过修改AutoBoxCacheMax。Float以及Double这组则没有对象缓存设置。这个也很好理解因为在某段数值范围内这两种类型值的数量是无限的无法进行缓存。
RELATED

相关推荐

人工智能入门 | K-means聚类算法的应用案例实战(含代码+图示)

人工智能入门 | K-means聚类算法的应用案例实战(含代码+图示)

前言:Hello大家好,我是小哥谈。K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑…

📅 2026/9/11 10:53:44
计算机网络-概论

计算机网络-概论

物理媒体 (1). 双绞铜线 常用于建筑内网络. (2). 同轴电缆 常用于电缆电视系统. (3). 光纤 优势:速度快,不受电磁干扰,低衰减,难窃听 常用于长途传输媒体,因特网主干. (4). 陆地无线…

📅 2026/9/11 10:53:44
提示工程核心原则与AI交互设计实践

提示工程核心原则与AI交互设计实践

1. 为什么提示设计能决定用户体验成败在AI交互领域,提示(prompt)就是用户与系统对话的"第一句话"。一个糟糕的提示设计,就像让用户面对一台没有按钮的老式收音机——明明功能强大,却不知从何下手。去年我们团…

📅 2026/9/11 10:53:44
MORE NEWS

更多资讯

📰

嵌入式Linux下Modbus RTU串口配置与协议解析实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

stm32 heap stack “两面包夹芝士”的堆栈模型 --转

【说在前面的话】 在中文嵌入式环境中,时不时的总能看到不少朋友”堆”“栈“傻傻分不清楚,我很早之前在文章《漫谈C变量——夏虫不可语冰》介绍过二者的区别,这里就不再深入展开,总之: 栈(Stack&#xff…

📰

k6 v0.57.0 特性详解:功能测试断言库、k6 new 模板化脚手架与 CSV 对象解析

k6 v0.57.0 特性详解:功能测试断言库、k6 new 模板化脚手架与 CSV 对象解析 【免费下载链接】k6 A modern load testing tool, using Go and JavaScript 项目地址: https://gitcode.com/GitHub_Trending/k6/k6 本指南以 k6 官方 v0.57.0 发布说明为核心&…

📰

Playwright Python 自动化测试:如何一套代码跑通 Chromium、Firefox 与 WebKit

Playwright Python 自动化测试:如何一套代码跑通 Chromium、Firefox 与 WebKit 【免费下载链接】playwright-python Python version of the Playwright testing and automation library. 项目地址: https://gitcode.com/GitHub_Trending/pl/playwright-python …

📰

换掉奥创中心只需 3 步:GHelper 性能模式、风扇曲线与独显直连完整上手指南

换掉奥创中心只需 3 步:GHelper 性能模式、风扇曲线与独显直连完整上手指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, V…

📰

TVBoxOSC:三步装好开源电视盒子控制应用,搭起家庭媒体中心

TVBoxOSC:三步装好开源电视盒子控制应用,搭起家庭媒体中心 【免费下载链接】TVBoxOSC TVBoxOSC - 一个基于第三方项目的代码库,用于电视盒子的控制和管理。 项目地址: https://gitcode.com/GitHub_Trending/tv/TVBoxOSC TVBoxOSC是一款…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬