为了账号安全,请及时绑定邮箱和手机立即绑定

总结得对否

比较两个对象是否相等,如果是equals(),就是比较两个对象的属性,属性值,类型是否相同;如果是==,就是比较两个对象是否分配了不同的内存空间。

正在回答

3 回答

错,equals才是比较两个对象的内存空间

0 回复 有任何疑惑可以回复我~
#1

StaceySmile 提问者

谢谢!
2016-04-20 回复 有任何疑惑可以回复我~

Object类中默认的equals()方法是比较引用地址的,想要比较两个对象的属性是否相同,就要重写equals()方法来做比较了。你没删除重写的equals()方法,比较的是对象的属性。应该是这样理解的吧。

0 回复 有任何疑惑可以回复我~

对。==比较的是地址,equals比较的是值。两个值相同的字符串用==比较结果可能是false,而equals()则一定为true;除非两个字符串是同一个new出来的对象,不然比较字符串是否相同用equals()。

0 回复 有任何疑惑可以回复我~
#1

StaceySmile 提问者

package exercise; public class initial { public static void main(String[] args) { Dog dog=new Dog(); Dog dog2=new Dog(); if(dog.equals(dog2)){ System.out.println("两个对象是相同的"); } else System.out.println("两个对象不相同"); } } 为什么我运行出来的结果跟老师讲的不一样?结果是:两个对象是相同的
2016-04-20 回复 有任何疑惑可以回复我~
#2

StaceySmile 提问者

我知道原因了,我忘记把子类里添加的equals()方法删除了,子类里添加的equals()方法是以==比较的,所以才出现了相反的结果。
2016-04-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530629    人
  • 解答问题       6091    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

总结得对否

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信