Topic: hashCode 怎么会一样?! |
Print this page |
1.hashCode 怎么会一样?! | Copy to clipboard |
Posted by: potomac Posted on: 2004-06-01 17:02
两个String 对象的hashCode 一样,但是 q==p 又是false的 ?! anybody explain for me ? output ================= 96354 96354 false |
2.Re:hashCode 怎么会一样?! [Re: potomac] | Copy to clipboard |
Posted by: tangming Posted on: 2004-06-01 17:37 p和q是两个引用,所有==为false, hashCode一样,应该它们都是指向一个String对象的。 |
3.Re:hashCode 怎么会一样?! [Re: tangming] | Copy to clipboard |
Posted by: potomac Posted on: 2004-06-01 17:55 tangming wrote: 那么请问怎么显示 p, q两个引用变量的 内存映像?可以明确看出不同之处? |
4.Re:hashCode 怎么会一样?! [Re: potomac] | Copy to clipboard |
Posted by: zhshfeng_xx Posted on: 2004-06-01 20:27 如果你把p,q的形式写成
这样的话,你就会得到true; |
5.Re:hashCode 怎么会一样?! [Re: potomac] | Copy to clipboard |
Posted by: michaelbeyond Posted on: 2004-06-03 13:06 对于String的变量形式,hashCode是根据string来计算hash code的,如果是对象,则根据对象的内存地址来计算hash code。如果有些类重载hash功能的话,则根据对象计算出的hash code也会一样的。 可以看看core java 卷二中的collection介绍。 如有解释错误,请大侠斧正! |
6.当然不一样了Re:hashCode 怎么会一样?! [Re: potomac] | Copy to clipboard |
Posted by: wfth Posted on: 2004-06-03 17:42 p和q作为引用对象的变量来说,他们是不同的变量,所以p!=q,但是在讨论他们所引用的对象是否是同一个对象时,应该用p.equals(q)来判断,这就是你的错误所在。 程序改写如下: public class TestString { public static void main(String[] args) { String p = new String("abc"); String q = new String("abc"); System.out.println(p.hashCode()); System.out.println(q.hashCode()); System.out.println(p.equals(q)); } } 结果: 96354 96354 true |
7.Re:hashCode 怎么会一样?! [Re: potomac] | Copy to clipboard |
Posted by: sevenFive Posted on: 2004-06-03 20:22 ==是判断两个对象引用是否相等,即是否指向同一个对象; 而hashcode是用于hash算法的,它的使用情况是对某些需要hash算法的collection进行操作时,默认Object对象的hash code是根据地址进行计算的,而String重载了hashCode方法,如下: public int hashCode() { |
8.Re:hashCode 怎么会一样?! [Re: potomac] | Copy to clipboard |
Posted by: ringayumi Posted on: 2004-06-04 00:09 When you use p.equals(q) get true , and The hashcode must same as well. p == q , They're compare in stack , but both are object reference , not primitive type. You can refer to the java.lang.Object API! It can help you. |
9.Re:hashCode 怎么会一样?! [Re: potomac] | Copy to clipboard |
Posted by: zgd Posted on: 2004-06-09 00:25 如果两个object是equals的话 它们的hashcode一定要相同 如果两个object的hashcode相同的话 它们不一定equals 就算全世界的object的hashcode都相同也没有关系 只是影响haseset的散列效果而已 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |