Оператор == та метод equals() – два основних способи порівняння об'єктів у мові програмування Java. Однак, вони мають різні призначення та поводяться по-різному залежно від контексту використання.
Оператор == порівнює значення посилань на об'єкти і повертає true, якщо вони вказують на той самий об'єкт у пам'яті. Це означає, що оператор == перевіряє ідентичність об'єктів, а чи не їх вміст.
З іншого боку, метод equals() порівнює вміст об'єктів та повертає true, якщо вони рівні. У більшості випадків метод equals() перевизначений класом, щоб порівнювати вміст об'єктів на основі їх полів або інших характеристик.
При використанні примітивних типів даних, таких як int або double оператор == порівнює значення цих типів. Однак, при використанні об'єктів класів оператор == порівнює посилання на об'єкти, а всередині методу equals() можна визначити необхідну поведінку порівняння для кожного класу.
== | equals() |
---|---|
Порівняння посилань на об'єкти. | Порівняння значень об'єктів. |
Повертає true, якщо посилання вказують на той самий об'єкт. | Повертає true, якщо значення об'єктів еквівалентні (рівні). |
Оператор застосовується до примітивних типів даних. | Метод застосовується до об'єктів/посилальних типів даних. |
Не може бути перевизначено. | Можливо перевизначений. |
Приклад: int a = 5; int b = 5; System.out.println(a == b); // true | Приклад: String s1 = "hello"; String s2 = "hello"; System.out.println(s1.equals(s2)); // true |
Як працює метод Equals?
Метод equals() перевіряє, чи є два об'єкти рівними. За замовчуванням метод equals() порівнює два об'єкти за посиланням, тобто повертає true тільки в тому випадку, якщо посилання вказують на той самий об'єкт.
Що робить equals C#?
Equals(Object) метод для перевірки на рівність значень. Він перевизначає Equals метод для Person класу. Якщо Person він прийняв реалізацію рівності базового класу, два Person об'єкта дорівнюватимуть лише в тому випадку, якщо вони посилаються на один об'єкт.
Який зв'язок між hashCode() та equals()?
Угода між equals і hashCode у Java Якщо об'єкти дорівнюють за результатами виконання методу equals, тоді їх hashcode повинні бути однаковими. Якщо об'єкти не дорівнюють за результатами виконання методу equals , тоді їх код може бути як однаковим, так і різним.
Навіщо нам перевизначати equals()?
Перевизначення методу hashCode Якщо два об'єкти рівні за методом equals() , їх хеш-коди мають бути рівними. У результаті перевизначення методів equals() і hashCode() дозволяє коректно порівнювати об'єкти та використовувати їх у колекціях.