關於equals(),求問

關於equals(),求問

如果equals()中傳入的字符串,則比較的是值(内容)而不是地址是這個意思嗎?

例如

String name;
    public boolean equals(Object obj) {
    if(obj==null)
      return false;
     
    Animal temp=(Animal)obj;
       if(this.getName().equals(temp.getName())&&this.getMonth()==(temp.getMonth()))
       return true;
       else
        return false;
    }

這裏面的this.getName().equals(temp.getName()實質就是兩個字符串的值(内容)進行比較而不是比較地址?和下面這個原理是一樣的嗎?

String str1=new String("你好");

String str2=new String("你好");

flag=str1.equals(str2);



正在回答

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

2回答

你好!首先说明一下equals()方法的作用,就是为了比较内容而设计的。

    字符串的equals()方法是JDK中已经定义好的,它已经重写了Object类的equals()方法,用来比较两个字符串的内容是否相等。

    而我们自定义的类,没有重写equals()方法,如果此时有Animal类的两个对象one和two,使用one.equals(two)返回值是false,因为此时也不知道比较的依据,也就是到底是Animal中的某一个属性相等就让equals()返回true,还是几个属性都相等才返回true。此时,就需要重写equals()方法了。

    而字符串的equals()方法在我们自定义的equals()方法中进行调用,完全是因为这里要对字符串进行比较。如果类中有字符串以外的属性,比如int age,那么进行整型比较时就会用到==运算符了。

   因此,这里跟字符串的equals()方法没有直接关系  

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

  • 慕码人4259003 提问者 #1
    老师你的意思是在这个重写的public boolean equals(Object obj) 方法中,间接地使用了字符串equals()方法吗?因为需要对字符串值进行比较 String name; //比较两个不同对象的字符串的值(不是地址) this.getName().equals(temp.getName() 是这个意思?
    2019-05-19 17:05:16
  • 好帮手慕珊 回复 提问者 慕码人4259003 #2
    是的,在重写的public boolean equals(Object obj) 方法中,调用了字符串的equals()方法,因为此处需要对name的值进行比较,name是字符串,你的理解是对的。祝学习愉快!
    2019-05-19 17:43:39
好帮手慕珊 2019-05-19 12:08:13

你好!关于第一个问题,指的是下面的equals()方法,还是this.getName().equals(temp.getName())中的equals()方法呢?

http://img1.sycdn.imooc.com//climg/5ce0d61a000118a902990041.jpg

关于第二个问题,他们的意思是意义的,因为这里的equals()方法都是字符的equals()方法。

http://img1.sycdn.imooc.com//climg/5ce0d6620001381a07650197.jpg

equals()方法的作用就是比较内容,==是用来比较地址的。

另外,区分我们自己重写的equals()方法和字符串的equals()方法。字符串的equals()方法是已经重写了Object类的equals()方法,作用是进行两个字符串内容的比较。而我们自己重写的equals()方法,代码需要我们来完成,根据我们的需求来写。

祝学习愉快!

  • 提问者 慕码人4259003 #1
    嗯,我想知道,在自己重写的equeals()方法里的this.getName().equals(temp.getName(),这里的equals我觉得实质上比较还是字符串啊,然后我就想只知道,假如说是不是只要equals()比较的如果是字符串的的话,就是单纯地去比较值(内容)而不是去比较地址了。
    2019-05-19 13:37:47
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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