A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

请各位大侠帮帮忙,我对这个问题困了很久了?谢谢各位了

2 个回复

正序浏览
首先比较来hashcode,如果hashcode相同,再比较equals。
如果hashcode()比较相同,那么equals一定相同。
Object中的equals方法
pubic boolean equals(Object obj){
        return (this==obj);
}
这是对两个对象的地址值比较。
当String 、Math、还有Integer、Double。。。。等这些封装类在使用equals()方法时,已经覆盖了object类的equals()方法。
复写以后,比较的方式就发生改变。
equals()相等的两个对象,hashcode()一定相等;  equals()不相等的两个对象,
却并不能证明他们的hashcode()不相等。换句话说,equals()方法不相等的两个对象,hashcode()有可能相等。
:hashcode()不等,一定能推出equals()也不等;hashcode()相等,equals()可能相等,也可能不等。
回复 使用道具 举报
equals()方法在Object类中的实现是通过==操作符来实现的,也就是说,如果子类不重写该方法的时候,那么这个类的对象比较的时候,是比较地址的(==的作用)
而Object类中的hashCode()方法会针对不同的对象返回不同的整数,通常这个整数是通过将该对象的内部地址转换成一个整数来实现的。
我个人认为他们两个在不重写的情况下都是根据地址来判断对象是否相等的。
个人见解,楼下的别喷!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马