老师后面的obj我知道是指的是新建的一个对象,那么if(this==obj)中的this是指什么?

老师后面的obj我知道是指的是新建的一个对象,那么if(this==obj)中的this是指什么?

public boolean equals(Object obj) {

//判断对象是否相等,相等返回true,不用继续比较属性了

if (this == obj)

return true;

//判断obj是否是Cat类的对象

if (obj.getClass() == Cat.class) {

Cat cat = (Cat) obj;

return cat.getName().equals(name) && cat.getMouth() == mouth

&& cat.getSpecies().equals(species);

}

return false;

}

this是不是指的是每次从set集合中拿出来的单个对象然后跟obj比较,直到其相等返回true或者是遍历集合没有相同对象执行下述代码?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕酷酷 2019-10-22 10:31:37

同学你好,你的理解有些偏差,执行equals和hashcode()方法会在add时进行底层的调用,这里的this是指的当前的Cat类型的对象,obj指的是需要比较的对象,所以if (this == obj)也就是比较这两个对象的地址,简单来说,比较他们是否是同一个引用,所以地址相等,这两个对象肯定相等,直接返回true,不执行下面的语句啦!

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


  • 同学可以这样理解 HashSet:是一个无序不可重复的集合 因为HashSet根据hashcode()方法返回值和equals()的方法来判断两个对象是否相同(不止对象引用还有内容相同),hashcode()的返回值判断插入位置,equals()用来判断该位置是否有和要插入的元素相同的,所以为了保证hashset集合无重复,需要重写equals()和hashcode()方法
    2019-12-04 13:08:41
  • 是不是这样理解,系统里面说set集合中传入值,会经过hashCode分类,假如就按视频里面分了3个,obj是比较对象也就是add马上要加入到集合中的元素,this就是分类后其中的3分之一,还是说搞反了,this是马上加入的集合的元素,obj是集合中的3分之一
    2020-01-17 16:00:36
  • 同学你好,this是马上加入的集合的元素,obj是集合中的3分之一 如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
    2020-01-17 16:17:06
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师