从实操中学Java:==和equals的区别

从实操中学Java:==和equals的区别

在Java中,我们常常遇到判断两个数据是否相等的应用场景。这是我们可以使用==和equals进行判断。所以我们需要弄清这二者之间的区别
废话不多说,先上代码进行研究:

String x = "str";
String y = "str";
String z = new String("str");
System.out.println(x==y);
System.out.println(x==z);
System.out.println(x.equals(y));
System.out.println(x.equals(z));

在这里插入图片描述
不知和看官老爷预想的结果是否一致?那么我们来讨论以下为什么是这种结果。
首先我们需要知道,==和equals比较是什么?
(1)==
基本数据类型:比较的是值是否相等;
引用数据类型:比较的是引用是否相等;
那么对于
System.out.println(x==y);
System.out.println(x==z);
x和y都指向同一个引用,因此System.out.println(x==y);结果为true
z则是通过new String()开辟了新的内存空间,因此引用不相等,所以值为false。
(2)equals
equals在本质上就是==,但是String域Integer等重写了equals方法,在比较时变成了值得比较
所以

System.out.println(x.equals(y));
System.out.println(x.equals(z));
在比较时值比较值是否相等,因此,二者得结果都为true。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值