hashCode和equals的面试题

hashCode和equals的面试题

 /*

  *   两个对象  Person  p1 p2

  *   问题: 如果两个对象的哈希值相同 p1.hashCode()==p2.hashCode()

  *        两个对象的equals一定返回true  p1.equals(p2) 一定是true

  *        正确答案:不一定

  *       

  *        如果两个对象的equals方法返回true,p1.equals(p2)==true

  *        两个对象的哈希值一定相同吗

  *        正确答案: 一定

  */ 

  Java 应用程序执行期间,

 1.如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。

 2.如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不 要求一定生成不同的整数结果。

    两个对象不同(对象属性值不同) equals返回false=====>两个对象调用hashCode()方法哈希值相同

    两个对象调用hashCode()方法哈希值不同=====>equals返回true

    两个对象不同(对象属性值不同) equals返回false=====>两个对象调用hashCode()方法哈希值不同

    两个对象调用hashCode()方法哈希值相同=====>equals返回true

   所以说两个对象哈希值无论相同还是不同,equals都可能返回true

猜你喜欢

转载自blog.csdn.net/fang0321/article/details/83857749