Java Programming - Objects and Collections - Discussion

Discussion Forum : Objects and Collections - Pointing out the correct statements (Q.No. 6)
6.
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?
x2.equals(x1)
x3.hashCode() == x4.hashCode()
x5.hashCode() != x6.hashCode()
x8.equals(x7)
Answer: Option
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.

Discussion:
6 comments Page 1 of 1.

Sanjay Kumar Gupta said:   6 years ago
Can anyone explain this question in detail?

Kamal Vidhani said:   6 years ago
According to me, B is wrong because x3.equals(x4) evaluates values so the objects could still be different.

D is correct because x7 and x8 hashCodes are evaluated as true via ==. Meaning x7 and x8 are referring to the same objects so their values must be the same too.

TRINITY said:   9 years ago
Please explain more on this concept.

Swati said:   9 years ago
Hello, Can you explain the answer?

Alex said:   1 decade ago
1) I couldn't understand the question.
2) I don't see x1, x2, x3 .... variables declarations.
3) What type does "x" variable have? There must be compilation error at line 1.

Chag vaibhav said:   1 decade ago
I can't able to understand why option b is correct since there is no option like that in question. Please explain. !

Post your comments here:

Your comments will be displayed after verification.