I have a doubt on a question from the mock test of K&B book. The que is

Given x=0; if(x1.hashCode() != x2.hashCode()) x = x+1; if(x3.equals(x4) == false)x=x+10; if(x5.equals(x6)==true)x=x+100; if(x7.hashCode()==x8.hashCode())x=x+1000; System.out.print("x =" + x);

If the output is x=1111, whic of the following will always be true.

The answer given is x2.equals(x1)==true

I could nto undersatnd this question. According to me if the hash code of x1 and x2 are not equal then the values cannot be equal. Can you please help me on this?

yes you are right,if two objects are equal then they must produce the same hashCode

Check this in the question Does the question says that the equals and hashCode methods are properly implemented or does the question gives the implementation of either one or both methods?