黑马程序员技术交流社区
标题:
2个对象值相同,却可以有不同的哈希吗,这句话对吗
[打印本页]
作者:
Devirn
时间:
2017-3-9 22:59
标题:
2个对象值相同,却可以有不同的哈希吗,这句话对吗
为什么?说说原因
作者:
小康不小啦
时间:
2017-3-9 23:38
不可以,因为按照哈希码值常规协定,当两个对象的equals方法反回true的时候,要求哈希码值也必须相同
作者:
Mr_Maty
时间:
2017-3-10 00:34
hashcode()方法的起源于object,具体计算只有对象的地址,如果特定对象不重写该方法,对象值相同(即地址相同)时hashcode()得到的值一定相同,如果重写了该方法(通常特定类会重写该方法),hashcode()的计算内容会由对象地址改为计算和对象成员变量相关(比如改写后hasdcode()方法返回的哈西值为变量1*变量二+2,此处仅做举例说明,只是为了让你明白重写后的函数返回值和特定类关系密切)
你的问题中的对象值相同我的理解是地址相同,如果hashcode没有被重写,则哈西值一定相同,如果被重写,则由于引用变量地址值相同,一定指向了同一个对象,同一个对象中的变量相同,所以由此计算出的哈西值也应该是相等的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2