请帮忙看下

请帮忙看下

不是说内存地址相同吗,为啥结果还是false呢?

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

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

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

2回答
好帮手慕阿满 2020-07-14 09:44:31

同学你好,在2-7这道题中,Father类中并没有重写equals()方法,如:

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

所以使用equals()进行比较时,比较的是两个对象的内存地址,使用new 创建的两个对象,内存地址必然不同,所以结果为false。

提问截图中所说的内存地址相同是指,equals()方法,使用getName()方法获取的字符串常量“花花”的内存地址相同。

祝:学习愉快~

  • Animal是因为重写了equals方法,所以内存地址相同,对吗?

    Father是因为没有重写equals方法,所以one和two在栈中是不同地址,所以不同是吗?


    2021-04-29 00:21:18
  • 同学你好,Animal重新了equals()方法,传入字符串常量“花花”时,内存地址相同。

    Father类没有重写equals()方法,new出来的对象是存储在堆中,one和two指向堆中的内存地址是不同的。

    祝:学习愉快~

    2021-04-29 09:43:07
  • 重写:

    public boolean equals(Object obj){

        if(obj==null)

                   return false;

        Animal temp=(Animal)obj;

    if(this.getName().equals(temp.getName())&&(this.getMonth))

                   return true;

        else

                    return false;

    }


    这是重写的方法吗,这里用的equals比较的地址是相同的吗,为什么这样比较地址就是相同的呢,同样的是对两个不同对象的比较啊,地址应该在这里就不相同的/

    2021-05-20 13:58:12
好帮手慕阿满 2020-07-12 11:52:46

同学你好,内存地址相同,结果为true。同学运行的结果是false吗?建议同学将代码和运行结果贴一下。

祝:学习愉快~

  • 提问者 慕婉清2005302 #1
    Java继承(下) 2-7 选择练习 我的问题是关于这个选择题的,第一次发问是我发的截图,和题中的答案解析我搞不明白
    2020-07-13 23:28:20
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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