栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

128陷阱底层原因

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

128陷阱底层原因

自动装箱:
我们在定义Integer类型的变量是用的是Integer num = 100;
实际上是Integer num = Integer.valueOf(100);因为我们习欢第一种写法,于是Java开发者就创造了这种操作,这就是自动装箱。我们从源代码中看一下底层的。



i从-128到127,[i+(-IntegerCache.low)]是个索引,返回的是cache数组索引从0到255的元素值


cache数组里放的是从-128到127,共256个元素;


如果值是在范围内那么返回其值,如果没在这个范围中那么会new一个新对象,那么就会出现这种情况

总结:在Integer的valueOf()方法中,如果我们的数值在-128127之间的数值都存储在有一个cache数组当中,该数组相当于一个缓存,当我们在-128127之间进行自动装箱的时候,我们就直接返回该数值在内存中的地址,所以在-128~127之间的数值用==进行比较的时候是相等的。而不在这个范围内的数,需要新开辟一个内存空间,所以不相等

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/292774.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号