int和integer有什么区别-mile米乐体育
开发技术
2021年07月09日 21:19
0
本篇内容介绍了“int和integer有什么区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
integeri1=newinteger(12); integeri2=newinteger(12); system.out.println(i1==i2);//false integeri3=126; integeri4=126; inti5=126; system.out.println(i3==i4);//true自动装箱 system.out.println(i3==i5);//true integeri6=128; integeri7=128; inti8=128; system.out.println(i6==i7);//false system.out.println(i6==i8);//true
以上这些输出的答案是什么?true or false? why?
分情况来比较
都定义为integer的比较:
new:一旦new,就是开辟一块新内存,结果肯定是false 不new: 看范围 integer做了缓存,-128至127,当你取值在这个范围的时候,会采用缓存的对象,所以会相等 当不在这个范围,内部创建新的对象,此时不相等
integer和int的比较:
实际比较的是数值,integer会做拆箱的动作,来跟基本数据类型做比较 此时跟是否在缓存范围内或是否new都没关系
源码分析:
当我们写integer i = 126,实际上做了自动装箱:integer i = integer.valueof(126); 分析这段源码
publicstaticintegervalueof(inti){ if(i>=integercache.low&&i<=integercache.high) returnintegercache.cache[i (-integercache.low)]; returnnewinteger(i); } //integercache是integer的内部类 privatestaticclassintegercache{ staticfinalintlow=-128; staticfinalinthigh; staticfinalintegercache[]; static{ //highvaluemaybeconfiguredbyproperty inth=127;
“int和integer有什么区别”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注恰卡编程网网站,小编将为大家输出更多高质量的实用文章!
展开全文