1. What is the difference in equals() in java.util and equals() in Object class? 2. Why equals() in java.util overrides equals() in Object ?. 3. Code: Box b1 = new Box(); Box b2 = new Box(); b1.l = 5 ; b2.l = 5 ; // l is public instance var in box class b1.equals(b2) is false // Because 2 different objects hence 2 different references stored in b1 and b2. (Please correct me if iam wrong) But.. Integer i1 = new Integer(5); Integer i2 = new Integer(5); i1.equals(i2) returns true!. Why? If I apply same logic as above, why i1.equals(i2) returns true? OR is implementation of equals method for wrapper class different?

The Integer class has its own equals method that overrides objects equals method. The method compares this object to the specified object. The result is true if and only if the argument is not null and is an Integer object that contains the same int value as this object. So it does actually check the value. If you change i2 to 6, false is returned.