选择答案:
A 是的,一定相同 
B 不一定相同 根据规则:
java.lnag.Object中对hashCode的约定:
1.在一个应用程序执行期间,如果一个对象的equals方法做比较所用到的信息没有被修改的话,则对该对象调用hashCode方法多次,它必须始终如一地返回同一个整数。
2.如果两个对象根据equals(Object o)方法是相等的,则调用这两个对象中任一对象的hashCode方法必须产生相同的整数结果。
3.如果两个对象根据equals(Object o)方法是不相等的,则调用这两个对象中任一个对象的hashCode方法,不要求产生不同的整数结果。但如果能不同,则可能提高散列表的性能。感觉应该是A,不知道正确答案是?

解决方案 »

  1.   

    不是.只不过Object默认实现是这样而已.
    但是如果覆写过equals(..)方法,那就不一定了.
      

  2.   

    呵呵,理论上是A,无论是核心JAVA还是高效Java中都提到,如果定义了equals方法,那么一定要改写hashCode方法,保证equals为真时,hashcode要相等。
      

  3.   

    规范要求相同,但是实际并不一定相同,hashCode和equals只是两个方法,你可以按照自己的意愿任意的重写它们。