Метод equals()
Метод equals() класса Object проверяет, эквивалентны ли два объекта. Поскольку метод equals() реализован в классе Object, он определяет лишь, ссылаются ли переменные на один и тот же объект. В качестве проверки по умолчанию эти действия вполне оправданы: всякий объект эквивалентен самому себе.
Пример
public class Student
{
private int student_id;
public Student(int student_id)
{
this.student_id = student_id;
}
public static void main(String[] args)
{
Student s1 = new Student(8888);
Student s2 = new Student(8888);
if(s1.equals(s2)){
System.out.println("Они равны!");
}
else{
System.out.println("Они не равны!");
}
}
}В представленном выше примере объекты Student созданы в конструкторе с одинаковым student_id, а метод main выводит на экран: "Они не равны!" Причина состоит в том, что вы не переопределили метод equals. При непереопределенном методе equals виртуальная машина просматривает адреса памяти каждого объекта, сравнивает их и в этом случае возвращает false. Это не то, чего хотим мы. Мы на самом деле хотим сравнить содержимое каждого объекта Student.
Чтобы решить эту проблему мы должны переопределить метод equals в классе Student таким образом.
Задание 1
Last updated