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?

Int和Integer有什么区别

分情况来比较

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

发布于 2021-07-09 21:19:29
收藏
分享
海报
0 条评论
174
上一篇:Python如何实现查询剪贴板自动匹配信息 下一篇:PHP中怎么将数组转换为字符串
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码