Назад к вопросам
Junior
72
questionbank
Какова функция метода equals() в Java?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Метод equals() в Java используется для сравнения двух объектов на равенство. По умолчанию, он сравнивает ссылки на объекты, то есть проверяет, указывают ли обе переменные на один и тот же объект в памяти.
Однако, для многих классов в Java (например, String, Integer, ArrayList), метод equals() переопределен для сравнения содержимого объектов. При переопределении метода equals(), необходимо также переопределить метод hashCode(), чтобы сохранить контракт о том, что если два объекта равны по equals(), то их hashCode() должны быть одинаковыми.
Обычное использование:
String s1 = new String("hello");
String s2 = new String("hello");
String s3 = s1;
System.out.println(s1 == s2); // false (сравнение ссылок)
System.out.println(s1.equals(s2)); // true (сравнение содержимого, переопределен в String)
System.out.println(s1 == s3); // true (сравнение ссылок)
Переопределение equals() и hashCode():
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;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age && name.equals(person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
Person p1 = new Person("Alice", 30);
Person p2 = new Person("Alice", 30);
Person p3 = new Person("Bob", 25);
System.out.println(p1.equals(p2)); // true (сравнение по переопределенным методам)
System.out.println(p1.equals(p3)); // false