Сравнение ссылок через == в Java
Оператор == для ссылочных типов проверяет,
указывают ли две переменные на один и тот же объект
в памяти. Разные экземпляры класса даже с одинаковыми
полями при == не равны:
class Post {
public String title = "";
public String text = "";
}
Создадим две одинаковые записи и сравним ссылки оператором ==:
Post a = new Post();
a.title = "News";
a.text = "Hello";
Post b = new Post();
b.title = "News";
b.text = "Hello";
Post c = a;
System.out.println(a == b);
System.out.println(a == c);
Если второй переменной присвоить первую, обе ссылаются
на один объект - сравнение даст true:
Post original = new Post();
original.title = "News";
Post alias = original;
System.out.println(original == alias);
Сравнение полей «по смыслу» делают вручную - проверяют каждое свойство отдельно:
Post a = new Post();
a.title = "News";
a.text = "Hello";
Post b = new Post();
b.title = "News";
b.text = "Hello";
boolean sameData =
a.title.equals(b.title) && a.text.equals(b.text);
System.out.println(sameData);
System.out.println(a == b);
Создайте два разных объекта Employee с одинаковым заголовком.
Выведите результат == для этих переменных.
Создайте объект Employee и вторую переменную,
которой присвоите тот же объект.
Выведите результат ==.