Назад к вопросам
Junior — Middle
65
Что произойдет при сравнении двух объектов, совпадающих по содержимому, если метод equals не был переопределен в их классе?
Ответ от нейросети
sobes.tech AI
Если метод equals не переопределён в классе, то при сравнении двух объектов методом equals будет использоваться реализация из класса Object. По умолчанию этот метод сравнивает ссылки на объекты, то есть проверяет, указывают ли обе переменные на один и тот же объект в памяти.
Таким образом, даже если два объекта имеют одинаковое содержимое (значения полей), метод equals вернёт false, если это разные экземпляры.
Пример:
class Person {
String name;
Person(String name) { this.name = name; }
}
Person p1 = new Person("Alice");
Person p2 = new Person("Alice");
System.out.println(p1.equals(p2)); // false, если equals не переопределён
Чтобы сравнивать объекты по содержимому, нужно переопределить метод equals (и hashCode).