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

[复制链接]
查看11 | 回复4 | 2010-7-8 01:48:10 | 显示全部楼层 |阅读模式
判断两个对象是否相等是不是先判断他们的hashcode是不是相等然后再判断equals方法?

回复

使用道具 举报

千问 | 2010-7-8 01:48:10 | 显示全部楼层
判断两个对象相等?你说==么?==运算应该是既没有判断hashcode也没有判断equals。没有判断hashcode大概是因为不需要,==就是在判断对象在内存中的地址,相同就是true,不相同就是false而hashcode则是对象的内部地址转换成一个整数,没必要舍近求远(经过一套转换,转成int再进行判断?没必要吧?)根本不可能去判断equals,因为equals就算是true,==一样可能是false。因为equals可以重写。如果你说的是equals方法的执行,那么可以明确的告诉你,equals就是根据equals方法的返回值来定,与hashcode无关。看看src.zip下的java.lang.Object.jav
回复

使用道具 举报

千问 | 2010-7-8 01:48:10 | 显示全部楼层
楼主,你自己说的已经差不多了判断对象相等的比较严谨的做法就是重写自己类的hashcode和equals方法对象是否相等的规则1 判断两个对象的hashCode是否相等; 如果不相等,认为两个对象也不相等, 完毕.2 如果相等, 再调用equals方法.判断相等,一是比地址,还有就是比内容,如果比地址直接==就好了,如果比内
回复

使用道具 举报

千问 | 2010-7-8 01:48:10 | 显示全部楼层
用equals就行了,你是学软件的吗?还是做网站的呢?
回复

使用道具 举报

千问 | 2010-7-8 01:48:10 | 显示全部楼层
判断对象最好要重写equals and hashcode,其中肯定有一些算法吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行