黑马程序员技术交流社区

标题: 如果类中没有重写equals方法,是不是默认继承Object的?是不是就是用“==”? [打印本页]

作者: MGC    时间: 2014-7-29 16:09
标题: 如果类中没有重写equals方法,是不是默认继承Object的?是不是就是用“==”?
大家都知道要判断对象的对象内容是否相同用equals,判断变量所对应的内存地址是否相同用==,问如果类中没有重写equals方法,是不是默认继承Object的?Object中的equals是不是就是用“==”操作符来判断?
作者: 王乐乐    时间: 2014-7-29 16:25
继承Object没问题,但是equals应该不是用==判断的。
作者: 暗夜星辰    时间: 2014-7-29 16:40
个人理解,希望能帮到楼主。
首先判断对象的对象内容是否相同复写了Object类中的方法,举个例子:String类就是复写其中的equals方法,所以判断方法就是如果字符串全一样就相同。而如果类中没有重写equals方法,你调用的equals方法当然是Object类的了(你的类中没定义equals方法,还能调用的话,当然是继承自父类了),而Object类的equals方法其实就和==这个比较运算符一样,比较的是地址值是否相同。
注意:复写equals方法,通常还需要复写 hashCode 方法。
作者: 黎志勇    时间: 2014-7-29 16:54
这是Object中的equals()方法源码。
  1.     public boolean equals(Object obj) {
  2.         return (this == obj);
  3.     }
复制代码

作者: MGC    时间: 2014-7-29 17:16
暗夜星辰 发表于 2014-7-29 16:40
个人理解,希望能帮到楼主。
首先判断对象的对象内容是否相同复写了Object类中的方法,举个例子:String类 ...

这个答案太棒了,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2