“==”和equals()方法到底有什么区别

  • 两个对象是否相等的含义

“==”和equals()都属于对象的关系运算中的比较相等。那么判断一个类的两个对象是否相等有什么含义呢?


有两层含义:
①判断它们是否引用同一个实例;
②当两个对象分别引用同一个实例时,判断它们的实例值是否相等。一般情况下,两个实例值相等,是指它们的各成员变量值分别对应相等。


  • 图解

类(引用数据类型)使用==、!=运算符比较两个对象是否引用同一个实例。一个类的equals方法用于比较该类的两个对象是否相等,包括引用同一个实例和分别引用两个实例两种情况,==关系运算和equals()方法的含义如下:
图解
(a) i和j都是基本数据类型变量,i==j比较两变量值是否相等,不比较地址;
(b) 将d1对象赋值给d2对象,两个对象引用同一个实例,d1==d2 ? true,d1.equals(d2)返回true;
(c) d2引用由d1拷贝构造的实例,d1==d2 ? false,d1.equals(d2)返回true;

记住,字符串的比较基本上都是使用equals方法。
如果一个类梅雨自己定义equals方法,那么它将继承Object类的equals方法,Object类的equals方法发实现代码如下:

boolean equals(Object o){
return this==o;
}

这说明,如果一个类没有自己定义equals方法,它默认从Object类继承的equals方法就是使用==操作符,也是在比较两个变量指向的对象是否是同一个对象,这时候使用equals和==是同样的结果,如果比较的是两个独立的对象则总返回false。

另外,对象运算符instanceof判断一个对象所引用的实例是否属于指定类,运算结果为boolean型。例如:

Person p=new Person();
d instanceof Person     //结果是true,p是Person类的实例。
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值