重写equals方法与不重写的区别是什么?我忘记了

重写equals方法与不重写的区别是什么?我忘记了

老师,重写了equals方法,调用的时候比较的就是对象里的内容;没有重写equals方法,调用的时候比较的就是对象的引用?那么没有重写equals方法的时候,对象1.equals(对象2)的值与对象1==对象2的值,是相同的咯?

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

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

2回答
好帮手慕酷酷 2019-09-09 19:27:51

同学你好,不好意思老师之前看错了,这里在没有重写equals方法时,==和equals都是比较栈内存中的地址是否相等,也就是引用是否相等。

例如如下代码:

没有重写equals

 
public class Test {  
 
   public static void main(String[] args) {  
  
      
     Student s = new Student("BlueSky");  
     Student s1=new Student("BlueSky");  
       
      if(s==s1) {
      System.out.println("s和是s1相等!");
      }  
       else System.out.println("s和是s1不相等!");  
       
      if(s.equals(s1)) {
      System.out.println("s和是s1相等!"); 
      } 
       else System.out.println("s和是s1不相等!");  
    }  
}

输出结果为:

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

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

好帮手慕酷酷 2019-09-09 18:24:35

同学你好,

1、第一个问题,你的理解是正确的。

2、第二个问题,当对象之间进行比较时,没有重写equals方法,equals与==是不同的,equals()方法比较的是两个对象的内容是否相等,而==是用于比较两个对象的引用是否相等。

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

  • 提问者 天才少年25 #1
    老师你的第二点,没有重写equals方法,那它比较的是什么呢?重写了是比较内容,没有重写就是比较引用,是吧?那==也是比较引用啊,那为什么没有重写的时候,对象1.equals(对象2)和对象1==对象2的值不相等呢?因为没有重写是比较引用啊,第一点你说是对的。
    2019-09-09 19:09:16
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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