永发信息网

怎么样判断两个对象相等?jvm会自动的先判断hashcode是否相等然后判断equals是否为TRUE吗?

答案:4  悬赏:60  手机版
解决时间 2021-03-20 04:10
  • 提问者网友:玫瑰园
  • 2021-03-19 21:38
怎么样判断两个对象相等?jvm会自动的先判断hashcode是否相等然后判断equals是否为TRUE吗?
最佳答案
  • 五星知识达人网友:几近狂妄
  • 2021-03-19 22:20
楼主,你自己说的已经差不多了
判断对象相等的比较严谨的做法就是重写自己类的hashcode和equals方法

对象是否相等的规则

1 判断两个对象的hashCode是否相等; 如果不相等,认为两个对象也不相等, 完毕.

2 如果相等, 再调用equals方法.

判断相等,一是比地址,还有就是比内容,如果比地址直接==就好了,如果比内容就要重写了,因为object里的equals的实现很简单,就是用==比的
全部回答
  • 1楼网友:几近狂妄
  • 2021-03-20 00:26
判断对象最好要重写equals and hashcode,其中肯定有一些算法吧
  • 2楼网友:七十二街
  • 2021-03-20 00:17
判断两个对象相等?你说==么?
==运算应该是既没有判断hashcode也没有判断equals。
没有判断hashcode大概是因为不需要,==就是在判断对象在内存中的地址,相同就是true,不相同就是false
而hashcode则是对象的内部地址转换成一个整数,没必要舍近求远(经过一套转换,转成int再进行判断?没必要吧?)
根本不可能去判断equals,因为equals就算是true,==一样可能是false。因为equals可以重写。

如果你说的是equals方法的执行,那么可以明确的告诉你,equals就是根据equals方法的返回值来定,与hashcode无关。
看看src.zip下的java.lang.Object.java:
public boolean equals(Object obj) {
return (this == obj);
}
没有重写的equals就是在执行==运算,而重写之后,则是根据重写之后的方法的返回值来判断是否equals。
  • 3楼网友:西岸风
  • 2021-03-19 22:38
用equals就行了,你是学软件的吗?还是做网站的呢?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯