logo

Різниця між порівнянням String за допомогою методу == та .equals() у Java

Обидва метод equals(). і == оператор використовуються для порівняння двох об’єктів у Java.

The Метод Java string equals(). , порівнює два рядки та повертає true, якщо всі символи збігаються в обох рядках, інакше повертає false.



The == оператор порівнює посилання або місце розташування об’єктів у купі, незалежно від того, чи вказують вони на одне й те саме розташування.
Щоразу, коли ми створюємо об’єкт за допомогою оператора новий , це створить a нове місце пам'яті для цього об'єкта. Таким чином, ми використовуємо оператор ==, щоб перевірити розташування в пам’яті або адресу двох об’єктів однакові чи ні.

Загалом обидва оператори equals() і == в Java використовуються для порівняння об’єктів для перевірки рівності, але ось деякі відмінності між ними:

  1. Основна відмінність між метод .equals(). і == оператор полягає в тому, що один є методом, а інший є оператором.
  2. Ми можемо використовувати оператори == для порівняння посилань ( порівняння адрес ) і метод .equals() для порівняння змісту . Простими словами, == перевіряє, чи обидва об’єкти вказують на одне й те саме місце пам’яті, тоді як .equals() обчислює порівняння значень в об’єктах.
  3. Якщо клас ні замінити метод дорівнює , тоді за замовчуванням він використовує метод 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()?

  1. Рефлексивність: Для будь-якого об’єкта x x.equals(x) має завжди повертати true.
  2. Симетрія : Якщо x.equals(y) повертає true, то y.equals(x) також має повертати true.
  3. Транзитивність : Якщо обидва x.equals(y) і y.equals(z) істинні, то x.equals(z) також має бути істинним.
  4. Послідовність : Кілька викликів x.equals(y) мають повернути той самий результат.
  5. Недійсність: Метод equals() ніколи не повинен повертати true у порівнянні з null.