According to the contract :
if obja.equals(objb) is true iff if hashcode(obja)==hashcode(objb)
but viceversa may not be true.
so here the answers are
return 0
return a+b
return a^b
try to find out why this so from the code ..you will find out these are
the correct ones ....