91名师指路-头部
91名师指路

Integer用“==”比较127时相等,而比较128时却不相等

由于某些原因,现在不支持支付宝支付,如需要购买源码请加博主微信进行购买,微信号:13248254750

代码演示

package com.mszl.eq;

/**
* 功能:Integer用”==“比较127时相等,而比较128时却不相等
* 备注:更多资料请访问 http://www.91mszl.com
* @author bobo teacher
*/
public class Test1 {

public static void main(String[] args) {
Integer aa=127;
Integer bb=127;

Integer cc=128;
Integer dd=128;

System.out.println(aa==bb);
System.out.println(aa.equals(bb));

System.out.println(" ************* ");

System.out.println(cc==dd);
System.out.println(cc.equals(dd));

}

}

执行结果

true
true
*************
false
true

看到执行结果,大家都很疑惑不应该都是true吗,怎么会是false了,我们来看看IntegerCache的源码



我们会发现Integer缓存了-128 到127之间的数,如果超过这个范围则会去new对象。

所以当 Integer cc=128 和Integer dd=128用“==” 来进行比较结果为false,而Integer是引用类型,用equals来进行比较,Integer重写了Object类的equals和hashCode,实际上比较的是值,而不是引用地址。所以为true





2020-04-02 17:10:11     阅读(764)

名师出品,必属精品    https://www.91mszl.com

联系博主    
用户登录遮罩层
x

账号登录

91名师指路-底部