Home » Java Programming » Objects and Collections

Assuming that the equals() and hashCode() methods are properly implemented, if the output is "x = 1111", which of the following statements will always be true? x = 0; if (x1.hashCode() != x2.hashCode() ) x = x + 1; if (x3.equals(x4) ) x = x + 10; if (!x5.equals(x6) ) x = x + 100; if (x7.hashCode() == x8.hashCode() ) x = x + 1000; System.out.println("x = " + x);

Correct Answer: x3.hashCode() == x4.hashCode()

Explanation:

By contract, if two objects are equivalent according to the equals() method, then the hashCode() method must evaluate them to be ==.


Option A is incorrect because if the hashCode() values are not equal, the two objects must not be equal.


Option C is incorrect because if equals() is not true there is no guarantee of any result from hashCode().


Option D is incorrect because hashCode() will often return == even if the two objects do not evaluate to equals() being true.


← Previous Question Next Question→

More Questions from Objects and Collections

Discussion & Comments

No comments yet. Be the first to comment!
Join Discussion