logo

Diferența dintre compararea String folosind metoda == și .equals() în Java

Amandoua metoda equals(). si == operator sunt folosite pentru a compara două obiecte în Java.

The Metoda Java șir equals(). , compară două șiruri și returnează adevărat dacă toate caracterele se potrivesc în ambele șiruri, altfel returnează false.



The == operator compară locația de referință sau de memorie a obiectelor dintr-un heap, indiferent dacă acestea indică aceeași locație sau nu.
Ori de câte ori creăm un obiect folosind operatorul nou , va crea un noua locatie de memorie pentru acel obiect. Deci folosim operatorul == pentru a verifica locația de memorie sau adresa a două obiecte sunt identice sau nu.

În general, ambii operatori equals() și == în Java sunt folosite pentru a compara obiecte pentru a verifica egalitatea, dar iată câteva dintre diferențele dintre cele două:

  1. Principala diferență între metoda .equals(). și == operator este că una este o metodă, iar cealaltă este operatorul.
  2. Putem folosi == operatori pentru compararea de referință ( comparație de adrese ) și metoda .equals() pentru comparație de conținut . În cuvinte simple, == verifică dacă ambele obiecte indică aceeași locație de memorie, în timp ce .equals() evaluează compararea valorilor din obiecte.
  3. Dacă o clasă nu suprascrieți metoda equals , apoi, implicit, folosește metoda equals(Object o) a celei mai apropiate clase părinte care a suprascris această metodă. **Vedea De ce să suprascrieți metoda equals(Object) și hashCode()? detaliat.

Exemplu:

Metoda String equals() și operator == în 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> >}> }>

>

desen dreptunghi gimp

>

Ieșire

true false true true>

Explicaţie: Aici, creăm două obiecte, și anume s1 și s2.

  • Atât s1 cât și s2 se referă la aceleași obiecte.
  • Când folosim operatorul == pentru compararea s1 și s2, rezultatul este adevărat deoarece ambele au aceleași adrese în şir bazin constant.
  • Folosind egal, rezultatul este adevărat, deoarece compară doar valorile date în s1 și s2.

Pool de șiruri Java

s1 = SALUT

s2 = SALUT

Java Heap

s3 = SALUT

Să înțelegem ambii operatori în detaliu:

Operator de egalitate(==)

Putem aplica operatori de egalitate pentru fiecare tip primitiv, inclusiv pentru tipul boolean. De asemenea, putem aplica operatori de egalitate pentru tipurile de obiecte.

Exemplu:

== operator în Java.

Java




straturi model osi
// 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>);> >}> }>

>

>

Ieșire

false false true true>

Dacă aplicăm == pentru tipurile de obiecte, atunci, acolo ar trebui să fie compatibilitate între tipurile de argumente (fie copil la părinte sau părinte la copil sau același tip). În caz contrar, vom primi o eroare de compilare.

comenzi kali linux

Exemplu:

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);> >}> }>

>

şacal vs lup

>

Ieșire:

false false // error: incomparable types: Thread and String>

Metoda Java String equals().

În Java, Metoda String equals(). compară cele două șiruri date pe baza datelor/conținutului șirului. Dacă tot conținutul ambelor șiruri este același, atunci returnează adevărat . Dacă toate caracterele nu sunt potrivite, atunci returnează false .

Sintaxă:

Sintaxă : public boolean equals(Object anotherObject)

Parametru :

  • altObiect- Șir de comparat

Se intoarce:

  • Valoare booleană :
    • Adevărat- Dacă șirurile sunt egale
    • fals- dacă șirurile nu sunt egale

Exemplu:

Metoda String equals() în Java

Java




simbol derivat parțial latex

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));> >}> }>

>

>

Ieșire:

true false false false true>

Explicaţie: Aici, folosim metoda .equals pentru a verifica dacă două obiecte conțin aceleași date sau nu.

  • În exemplul de mai sus, creăm 3 obiecte Thread și 2 obiecte String.
  • În prima comparație, verificăm dacă t1 == t3 sau nu. După cum le știm pe amândouă t1 și t3 indică spre același obiect . De aceea revine adevărat.
  • În a doua comparație, folosim operatorul == pentru a compara obiectele șir și nu conținutul obiectelor. Aici, ambele obiecte sunt diferite și, prin urmare, rezultatul acestei comparații este Fals.
  • Când comparăm 2 obiecte String cu operatorul equals(), atunci verificăm dacă ambele obiecte conțin aceleași date sau nu.
  • Ambele obiecte conțin același șir, adică GEEKS. De aceea revine adevărat.

Citește și:

  • Metoda Character.equals() în Java cu exemple
  • ==, equals(), compareTo(), equalsIgnoreCase() și compare()

Concluzie

Metoda Java șir equals() și operatorul == sunt ambele folosite pentru a compara șirurile în Java. În acest tutorial am acoperit cu exemple operatorul == și metoda String equals() în Java.

  Read More     String Methods in Java>

Diferența dintre metoda == și .equals() - Întrebări frecvente

1. Care este diferența dintre str1 == str2 și str1 este egal cu str2?

În Java, str1==str2 va returna true dacă str1 și str2 sunt șiruri cu același conținut. Acest lucru se datorează faptului că șirurile cu același conținut sunt stocate în aceeași locație.

str1.equals(str2) va returna true dacă str1 și str 2 sunt obiecte șir diferite, dar au același conținut.

2. Care este diferența dintre == și equals în comparația șirurilor?

The metoda string equals(). compară două șiruri și returnează adevărat dacă toate caracterele se potrivesc în ambele șiruri, altfel returnează false.

Operatorul == compară locația de referință sau de memorie a obiectelor dintr-un heap, indiferent dacă acestea indică aceeași locație sau nu.

3. Care sunt regulile metodei equals()?

  1. Reflexivitate: Pentru orice obiect x, x.equals(x) ar trebui să returneze întotdeauna adevărat.
  2. Simetrie : Dacă x.equals(y) returnează adevărat, atunci y.equals(x) trebuie să returneze și adevărat.
  3. Tranzitivitatea : Dacă x.equals(y) și y.equals(z) sunt ambele adevărate, atunci x.equals(z) trebuie să fie și el adevărat.
  4. Consecvență : Invocările multiple ale lui x.equals(y) ar trebui să returneze același rezultat.
  5. Nenulitate: Metoda equals() nu ar trebui să returneze niciodată true în comparație cu null.