int和integer有什么区别-亚博电竞手机版

本篇内容介绍了“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有什么区别”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注恰卡编程网网站,小编将为大家输出更多高质量的实用文章!

展开全文

int

内容来源于互联网和用户投稿,文章中一旦含有亚博电竞手机版的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系亚博电竞手机版删除

最新文章

网站地图