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);
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?
Answer: Option B
Was this answer helpful ?
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 ?
Submit Solution