Objects and Collections

Q1:
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?

A x2.equals(x1)

B x3.hashCode() == x4.hashCode()

C x5.hashCode() != x6.hashCode()

D x8.equals(x7)

ANS:A - x2.equals(x1)

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.



img not found
img

For help Students Orientation
Mcqs Questions

One stop destination for examination, preparation, recruitment, and more. Specially designed online test to solve all your preparation worries. Go wherever you want to and practice whenever you want, using the online test platform.