Сравнение объектов через equals в Java
Сравнивать два объекта по смыслу удобнее через отдельный метод,
а не только через оператор равенства ссылок. Такой метод в Java
называется equals; у Object он реализован так же,
как ==: true только если обе переменные указывают
на один и тот же экземпляр в памяти.
Два разных объекта Post с одинаковым заголовком при
стандартном equals не равны - совпадает лишь адрес:
class Post {
public String title;
public Post(String title) {
this.title = title;
}
}
Создадим два объекта с одним текстом и сравним ссылки и equals:
Post first = new Post("News");
Post second = new Post("News");
System.out.println(first == second);
System.out.println(first.equals(second));
Если второй переменной присвоить тот же объект, что и первой,
и ==, и equals вернут true:
Post first = new Post("News");
Post same = first;
System.out.println(first.equals(same));
Сравнивать объекты через == имеет смысл, когда важна
именно одна и та же ссылка. Для проверки «одинаковые ли данные
в полях» позже переопределяют equals; до этого
поведение остаётся как у Object.
Создайте два разных объекта Employee с одинаковым
именем. Выведите результат first.equals(second).