equals方法里?为何重写后变true?Object和String的equals在官网看不懂
//重载 public boolean equals(Animal obj) { if (obj == null) return false; if (this.getName().equals(obj.getName()) && this.getMonth()==obj.getMonth()) return true; else return false; }
1、其中this.getName().equals(obj.getName(),里面的equals是继承Object还是String的equals?为什么是继承一个,不是继承另一个?
2、为什么重写后变true?我看了Oracle的Object和String的equals方法,完全看不出区别,怎么会一个是比较是否同一片内存空间,一个是比较值是否相等呢?
public boolean equals(Object obj)
Parameters:
obj - the reference object with which to compare.
==================================
public boolean equals(Object anObject)
Parameters:
anObject - The object to compare this String against
正在回答
同学你好,String类中重写了equals()方法,所以这时我们进入String类查看重写后的equals()方法。如图所示,在使用equals()方法时,首先会根据instanceOf()方法判断此对象是否是String类型,如果是的话,再比较字符串内容是否相等。我们再打开Object中的equals()方法,发现在这个方法中,只比较了两个对象的引用地址是否相等。所以,二者equals方法比较的不是同一个东西。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星