equals方法 java_java中equals方法研究

java中的equals函数在Object类里面,而Object类是所有类的父类,所以所有的类里面都有equals函数。

“==”操作符之前用于比较两个基本数据类型的值是否相等,而对于引用数据类型,“==”操作符用于判断两个引用是否指向堆内存中的同一个对象。

9d58ec7d789bd3bc4825c2f44ad5b4f2.png

8b83f78ee164aec13928e6b2c65e7d23.png

equals函数用来比较两个对象的内容是否相等

对象的内容相等通常需要满足下面两个条件:

1、对象的类型相同(用instanceof比较)

2、两个对象的成员变量的值完全相同

Object函数中的equals方法:

3b586a6d8efc7c163785e86368d8ea7f.png

a7b9fdc27a0b394dc9f385f64ecff478.png

通过对比我们发现调用Object的equals方法和使用“==”比较两个对象是否相等没有区别,很多java视频教程都提到过这个问题,这是为什么呢?你看看object中equals方法的源码就明白啦。所以我们需要根据上述两个条件复写equals方法

首先判断this和obj是否指向堆内存中的同一个对象,是的话就返回true,再判断obj是不是User类型的,不是的话返回false,是的话就进行向下转型,再比较this和u的成员变量是否相等。

基本数据类型的成员变量比较使用"==",引用数据类型的成员变量比较用equals

总结:平时我们在对java中的基本数据类型进行比较的时候,直接使用==就可以了,而如果要对引用数据类型进行比较的时候,就必须使用equals,而由于equals方法是在Object里面,而Object又是所有类的祖先类,所以每个类当中都会有equals方法。需要注意的是object里面的equals方法只是是用“==”进行比较的,所以我们在使用equals方法的时候要进行重写,重写的时候写上我们的比较规则。java中的String类就重写了这个方法,所以我们不需要再进行重写了,而是直接使用就可以。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值