Integer类通过new关键字创建对象与直接赋int值的区别 - 朗尊软件,企业级电商平台提供商
2019-12-20 阅读:3970
分类:技术前沿
在Legendshop里,程序猿们不仅仅埋头苦干,而且还会经常进行技术讨论与研究,这里整理了一下我们的程序猿们的讨论话题“Integer类通过new关键字创建对象与直接赋int值的区别”,与您分享!
在Legendshop里,程序猿们不仅仅埋头苦干,而且还会经常进行技术讨论与研究,这里整理了一下我们的程序猿们的讨论话题“Integer类通过new关键字创建对象与直接赋int值的区别”,与您分享!
1. int 和Integer在进行比较的时候,Integer会进行拆箱,转为int值与int进行比较。
2. Integer与Integer比较的时候,由于直接赋值的时候会进行自动的装箱,那么这里就需要注意两个问题:
一个是-128<= x<=127的整数,将会直接缓存在IntegerCache中,那么当赋值在这个区间的时候,不会创建新的Integer对象,而是从缓存中获取已经创建好的Integer对象。
二是当大于这个范围的时候,直接new Integer来创建Integer对象。
3. new Integer(1) 和Integer a = 1不同,前者会创建对象,存储在堆中,而后者因为在-128到127的范围内,
不会创建新的对象,而是从IntegerCache中获取的。那么Integer a = 128, 大于该范围的话才会直接通过new Integer(128)创建对象,进行装箱。
如果你运行下面的代码
Integer a = 1000, b = 1000;
System.out.println(a == b);//1
Integer c = 100, d = 100;
System.out.println(c == d);//2
你会得到
false
true
基本知识:我们知道,如果两个引用指向同一个对象,用==表示它们是相等的。如果两个引用指向不同的对象,用==表示它们是不相等的,即使它们的内容相同。
因此,后面一条语句也应该是false 。
这就是它有趣的地方了。如果你看去看 Integer.java 类,你会发现有一个内部私有类,IntegerCache.java,它缓存了从-128到127之间的所有的整数对象。
所以事情就成了,所有的小整数在内部缓存,然后当我们声明类似——
Integer c = 100;
的时候,它实际上在内部做的是
Integer i = Integer.valueOf(100);
现在,如果我们去看valueOf()方法,我们可以看到
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
如果值的范围在-128到127之间,它就从高速缓存返回实例。
所以…
Integer c = 100, d = 100;
指向了同一个对象。
这就是为什么我们写
System.out.println(c == d);
我们可以得到true。
现在你可能会问,为什么这里需要缓存?
合乎逻辑的理由是,在此范围内的“小”整数使用率比大整数要高,因此,使用相同的底层对象是有价值的,可以减少潜在的内存占用。
文章来源:广州朗尊软件科技有限公司
【朗尊软件】是中国领先的专业电商平台提供商,秉承着“专业塑造传奇,用心成就电商”的理念, 专注于为用户提供一体化的电商解决方案及服务,搭建垂直行业垂直电商一站式营销管理工具。目前拥有自主研发的电子商务平台产品:SAAS云平台、微商城小程序、云商城、云小店、代理商平台、B2B2C商城、B2B大宗交易平台、跨境电商服务、大数据平台搭建、微服务架构等产品、各种定制商城及解决方案。
网站声明:以上内容为朗尊软件官方网站的原创文章,如需转载,请注明出处,谢谢合作!
上一篇:金融与互联网的深度融合——互联网金融 - 朗尊软件,企业级电商平台提供商
下一篇:互联网殡葬电商关张 曾称让所有人都死得起
相关文章
一分钟看懂区块链 - 朗尊软件,企业级电商平台提供商
发表时间: 2019-12-20
![]()
B2B2B平台融合供应链金融系统:解决企业金融难题
发表时间: 2023-11-09
![]()
Java商城源代码:搭建小程序商城的解决方案
发表时间: 2023-09-11
![]()
推荐阅读
南钢鑫智链平台 | 供应链集采平台解决方案
发表时间:2024-01-06
![]()
java电商领域的技术专家Newway
发表时间:2023-04-13
![]()
“数”及大文旅,“链”推大湾区 | 朗尊携手广东电视台助推乡村振兴
发表时间:2023-10-16
![]()
传音商城 | 打造高效采购新生态,赋能全球员工与供应链
发表时间:2025-04-10
![]()
如何解决传统工业大众交易的问题?
发表时间:2025-03-07
![]()