Junior
What is the purpose of the equals method in Java?
sobes.tech AI
Answer from AI
The equals method in Java is used for object comparison. By default, it checks if two variables refer to the same object in memory. Classes can override this method to implement custom comparison logic based on the internal state of objects.
Typically, when overriding equals, the following rules are followed:
- Reflexivity: For any non-null reference
x,x.equals(x)should returntrue. - Symmetry: For any non-null references
xandy,x.equals(y)should returntrueif and only ify.equals(x)returnstrue. - Transitivity: For any non-null references
x,y, andz, ifx.equals(y)andy.equals(z)are true, thenx.equals(z)should be true. - Consistency: Multiple invocations of
x.equals(y)should consistently return the same result, provided no information used in equality comparisons is modified. x.equals(null)should returnfalse.
It is also important to override hashCode whenever equals is overridden, to maintain the contract: if two objects are equal according to equals, their hash codes must be the same.
Example override:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true; // Reference check
if (o == null || getClass() != o.getClass()) return false; // Null and type check
Person person = (Person) o; // Type cast
return age == person.age && // Compare age
Objects.equals(name, person.name); // Compare name, null-safe
}
@Override
public int hashCode() {
return Objects.hash(name, age); // Generate hash code based on fields
}
// Getters and other methods...
}