Sail E0 Webinar
Question

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);


and 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?


Options:
A .  x2.equals(x1)
B .  x3.hashCode() == x4.hashCode()
C .  x5.hashCode() != x6.hashCode()
D .  x8.equals(x7)
Answer: Option B

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 hash

Code().

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



Was this answer helpful ?
Next Question

Submit Solution

Your email address will not be published. Required fields are marked *

Latest Videos

Latest Test Papers