“==”与 equals的区别

“==”与 equals的区别

在java中," == " 作为关系运算符,对于基本数据类型而言,"=="比较的是值的大小;对于引用数据类型而言,比较的则是内存中的地址,即是否为同一对象的引用。

equals用于比较引用数据类型的具体内容是否相同,它不适用于基本数据类型的比较。

“==”在基本数据类型与封装类型的不同表现

int a = 10;
int b = 10;
System.out.println(a == b);

对于这个判断,我们立马就知道为true。因为对于基本数据类型,==比较的是值的大小。那如果是用int的封装类型Integer呢?

Integer a= 10;
Integer b = 10;
System.out.println(a == b);

通过编译运行,答案也为true
那如果这样呢?

Integer a = 200;
Integer b = 200;
System.out.println(a == b);

惊奇地发现结果为 false。
为什么改变了值结果就变了呢?原因是为了节省内存即访问速度,java将Integer类型范围在1个字节(-128~127)fa范围内的值存放在了常量池中已方便访问,所以前面的10因为在常量池范围内,所以它们对应的是同一个对象,因此为true,而后面的200不在常量池范围内,因此为false。

“==”跟equals在引用类型中的表现

还是拿Integer来作为例子:

Integer a = new Integer(10);
Integer b = new Integer(10);
System.out.println(a == b);
System.out.println(a.equals(b));

结果为 false ,true.
可以看到,这里用了new关键字,结果就全然不同了。因为a、b在这里表现为引用类型,==对于引用类型而言比较的是内存中的地址,因此为false;equals比较的内容是否相同,因此为true。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fastsy

打赏一份隆江猪脚饭吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值