首页 > 其他 > 详细

整型包装类之间的值比较问题

时间:2019-11-26 13:11:05      阅读:76      评论:0      收藏:0      [点我收藏+]

   废话不多说,先看代码

Integer a = 2;
Integer b = 2;
if(a==b){
System.out.println("相等");
}else{
System.out.println("不相等");
}

  有人估计会说,卧槽,这边简单的代码也好意思往这放,答案显而易见啊,是的,答案当然是相等了,那么再往下看下段代码

 Integer a = 200;
 Integer b = 200;
 if(a==b){
     System.out.println("相等");
 }else{
     System.out.println("不相等");
 }
             

再运行一下看看,是不是结果出乎意料啊?怎么就不相等了呢???

对于 Integer var = ? 在-128 至 127 范围内的赋值,Integer 对象是在 IntegerCache.cache 产生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是个大坑,整型包装类的值一定要使用 equals 方法进行判断。

整型包装类之间的值比较问题

原文:https://www.cnblogs.com/angryprogrammer/p/11934415.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!