不能这么说,其实某种程度上变量的hascode是由你来决定的,只要你override了其hascode函数,那么生成的散列码是可以由你自己的哈希函数来决定的,但是如果你考虑不是很周详,有可能会出现大量的冲突,反而更降低了效率;而java中默认的hashcode是哈希了变量的地址,所以对于你提出的两个变量,在不override其hashcode的前提下,得出的结果一般是不同的*(也不排除两个引用指向同一地址的情况……)。
给你推荐本书 《Thinking in Java》,Java程序员居家旅行的必备首选~
String 对象的哈希码根据以下公式计算:
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
所以相同.
因为i equls j,所以具有相同的hashcode().