Обидва метод equals(). і == оператор використовуються для порівняння двох об’єктів у Java.
The Метод Java string equals(). , порівнює два рядки та повертає true, якщо всі символи збігаються в обох рядках, інакше повертає false.
The == оператор порівнює посилання або місце розташування об’єктів у купі, незалежно від того, чи вказують вони на одне й те саме розташування.
Щоразу, коли ми створюємо об’єкт за допомогою оператора новий , це створить a нове місце пам'яті для цього об'єкта. Таким чином, ми використовуємо оператор ==, щоб перевірити розташування в пам’яті або адресу двох об’єктів однакові чи ні.
Загалом обидва оператори equals() і == в Java використовуються для порівняння об’єктів для перевірки рівності, але ось деякі відмінності між ними:
- Основна відмінність між метод .equals(). і == оператор полягає в тому, що один є методом, а інший є оператором.
- Ми можемо використовувати оператори == для порівняння посилань ( порівняння адрес ) і метод .equals() для порівняння змісту . Простими словами, == перевіряє, чи обидва об’єкти вказують на одне й те саме місце пам’яті, тоді як .equals() обчислює порівняння значень в об’єктах.
- Якщо клас ні замінити метод дорівнює , тоді за замовчуванням він використовує метод equals(Object o) найближчого батьківського класу, який перевизначив цей метод. **Побачити Навіщо перевизначати equals(Object) і hashCode() метод? детально.
приклад:
Метод String equals() і оператор == у Java.
Java
// Java program to understand> // the concept of == operator> public> class> Test {> >public> static> void> main(String[] args)> >{> >String s1 =>'HELLO'>;> >String s2 =>'HELLO'>;> >String s3 =>new> String(>'HELLO'>);> >System.out.println(s1 == s2);>// true> >System.out.println(s1 == s3);>// false> >System.out.println(s1.equals(s2));>// true> >System.out.println(s1.equals(s3));>// true> >}> }> |
>
>Вихід
true false true true>
Пояснення: Тут ми створюємо два об’єкти, а саме s1 і s2.
- І s1, і s2 відносяться до тих самих об’єктів.
- Коли ми використовуємо оператор == для порівняння s1 і s2, результат є істинним, оскільки обидва мають однакові адреси в рядок постійний басейн.
- Використовуючи дорівнює, результат є істинним, оскільки він лише порівнює значення, наведені в s1 і s2.
Пул рядків Java
| s1 = ПРИВІТ |
| s2 = ПРИВІТ ой |
Java Heap
| s3 = ПРИВІТ |
Розберемося з обома операторами докладніше:
Оператор рівності (==)
Ми можемо застосувати оператори рівності для кожного примітивного типу, включаючи булевий тип. Ми також можемо застосувати оператори рівності для типів об’єктів.
приклад:
== оператор в Java.
Java
// Java program to illustrate> // == operator for compatible data> // types> class> Test {> >public> static> void> main(String[] args)> >{> >// integer-type> >System.out.println(>10> ==>20>);> >// char-type> >System.out.println(>'a'> ==>'b'>);> >// char and double type> >System.out.println(>'a'> ==>97.0>);> >// boolean type> >System.out.println(>true> ==>true>);> >}> }> |
>
>Вихід
false false true true>
Якщо ми застосуємо == для типів об’єктів, то тут повинна бути сумісність між типами аргументів (від дитини до батьків або від батьків до дитини або того самого типу). В іншому випадку ми отримаємо помилку під час компіляції.
приклад:
np нулі
Java
// Java program to illustrate> // == operator for incompatible data types> class> Test {> >public> static> void> main(String[] args)> >{> >Thread t =>new> Thread();> >Object o =>new> Object();> >String s =>new> String(>'GEEKS'>);> >System.out.println(t == o);> >System.out.println(o == s);> >// Uncomment to see error> >System.out.println(t==s);> >}> }> |
>
>
Вихід:
false false // error: incomparable types: Thread and String>
Метод Java String equals().
У Java, Метод String equals(). порівнює два дані рядки на основі даних/вмісту рядка. Якщо весь вміст обох рядків однаковий, це повертає true . Якщо всі символи не збігаються, то це повертає false .
Синтаксис:
Синтаксис : public boolean дорівнює (Object anotherObject)
Параметр :
- інший об'єкт- Рядок для порівняння
Повернення:
- Логічне значення :
- правда- Якщо рядки рівні
- помилковий- якщо рядки не рівні
приклад:
Метод String equals() у Java
Java
public> class> Test {> >public> static> void> main(String[] args)> >{> >Thread t1 =>new> Thread();> >Thread t2 =>new> Thread();> >Thread t3 = t1;> >String s1 =>new> String(>'GEEKS'>);> >String s2 =>new> String(>'GEEKS'>);> >System.out.println(t1 == t3);> >System.out.println(t1 == t2);> >System.out.println(s1 == s2);> >System.out.println(t1.equals(t2));> >System.out.println(s1.equals(s2));> >}> }> |
>
>
перевести рядок до int java
Вихід:
true false false false true>
Пояснення: Тут ми використовуємо метод .equals, щоб перевірити, чи два об’єкти містять однакові дані чи ні.
- У наведеному вище прикладі ми створюємо 3 об’єкти Thread і 2 об’єкти String.
- Під час першого порівняння ми перевіряємо, чи t1 == t3 чи ні. Як ми знаємо обох t1 і t3 вказують на той же об'єкт . Ось чому він повертає істину.
- Під час другого порівняння ми використовуємо оператор == для порівняння рядкових об’єктів, а не вмісту об’єктів. Тут обидва об’єкти різні, а отже, результатом цього порівняння є False.
- Коли ми порівнюємо 2 об’єкти String за допомогою оператора equals(), тоді ми перевіряємо, чи містять обидва об’єкти однакові дані чи ні.
- Обидва об’єкти містять один і той самий рядок, тобто GEEKS. Ось чому він повертає істину.
Читайте також:
- Метод Character.equals() в Java з прикладами
- ==, equals(), compareTo(), equalsIgnoreCase() і compare()
Висновок
Метод Java string equals() і оператор == використовуються для порівняння рядків у Java. У цьому посібнику ми розглянули оператор == і метод String equals() у Java з прикладами.
Read More String Methods in Java>
Різниця між методами == і .equals() - поширені запитання
1. Яка різниця між str1 == str2 і str1 дорівнює str2?
У Java str1==str2 поверне true, якщо str1 і str2 є рядками з однаковим вмістом. Це тому, що рядки з однаковим вмістом зберігаються в одному місці.
str1.equals(str2) поверне true, якщо str1 і str 2 є різними рядковими об’єктами, але мають однаковий вміст.
2. Яка різниця між == і дорівнює в порівнянні рядків?
The метод string equals(). порівнює два рядки та повертає true, якщо всі символи збігаються в обох рядках, інакше повертає false.
Оператор == порівнює посилання чи місце розташування об’єктів у купі, незалежно від того, чи вказують вони на одне й те саме місце чи ні.
3. Які правила методу equals()?
- Рефлексивність: Для будь-якого об’єкта x x.equals(x) має завжди повертати true.
- Симетрія : Якщо x.equals(y) повертає true, то y.equals(x) також має повертати true.
- Транзитивність : Якщо обидва x.equals(y) і y.equals(z) істинні, то x.equals(z) також має бути істинним.
- Послідовність : Кілька викликів x.equals(y) мають повернути той самий результат.
- Недійсність: Метод equals() ніколи не повинен повертати true у порівнянні з null.