Java. Сравнение объектов с оператором ==

Существует два способа сравнить объекты в языке Java:

  • Оператор ==
  • Оператор equals()

Первый, наиболее употребляемый, сравнивает объекты на равенство. Другими словами, выражение:

a == b

возвратит true тогда и только тогда, когда a и b ссылаются точно на тот же экземпляр класса (то есть, на тот же объект). Исключение составляют примитивы. При сравнении двух примитивов с использованием оператора == система времени исполнения Java сравнивает их значения (они не являются настоящими объектами). Попробуйте поместить этот код в main() и взгляните на результат, отображаемый в консоли:

int int1 = 1;
int int2 = 1;
Integer integer1 = new Integer(1);
Integer integer2 = new Integer(1);
Adult adult1 = new Adult();
Adult adult2 = new Adult();

System.out.println(int1 == int2);
System.out.println(integer1 == integer2);
integer2 = integer1;
System.out.println(integer1 == integer2);
System.out.println(adult1 == adult2);

Первое сравнение возвращает true , поскольку сравниваются примитивы с одинаковыми значениями. Второе сравнение возвращает false , поскольку две переменные не ссылаются на один и тот же экземпляр объекта.

Третье сравнение возвращает true , потому что две переменные теперь ссылаются на один и тот же экземпляр. Если сделать то же самое с нашим классом, мы тоже получим false , потому что adult1 и adult2 не ссылаются на один и тот же экземпляр.

Рейтинг
( Пока оценок нет )
Загрузка ...