logo

Diferència entre comparar String mitjançant el mètode == i .equals() a Java

Tant el mètode equals(). i la == operador s'utilitzen per comparar dos objectes a Java.

El Mètode Java string equals(). , compara dues cadenes i retorna true si tots els caràcters coincideixen en ambdues cadenes, en cas contrari retorna false.



El == operador compara la referència o la ubicació de memòria dels objectes d'un munt, tant si apunten a la mateixa ubicació com si no.
Sempre que creem un objecte mitjançant l'operador nou , crearà un nova ubicació de memòria per aquest objecte. Per tant, utilitzem l'operador == per comprovar que la ubicació de la memòria o l'adreça de dos objectes són iguals o no.

En general, ambdós operadors equals() i == a Java s'utilitzen per comparar objectes per comprovar la igualtat, però aquí hi ha algunes de les diferències entre els dos:

  1. La principal diferència entre el mètode .equals(). i el == operador és que un és un mètode i l'altre és l'operador.
  2. Podem utilitzar els operadors == per a la comparació de referència ( comparació d'adreces ) i mètode .equals() per comparació de continguts . En paraules simples, == comprova si tots dos objectes apunten a la mateixa ubicació de memòria mentre que .equals() avalua la comparació de valors dels objectes.
  3. Si una classe no ho fa anul·lar el mètode d'iguals , aleshores, per defecte, utilitza el mètode equals(Object o) de la classe pare més propera que ha anul·lat aquest mètode. ** Veure Per què anul·lar el mètode equals(Object) i hashCode()? en detall.

Exemple:

El mètode String equals() i l'operador == a 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> >}> }>

>

>

sql ordenar per data
Sortida

true false true true>

Explicació: Aquí, creem dos objectes, és a dir, s1 i s2.

  • Tant s1 com s2 es refereixen als mateixos objectes.
  • Quan utilitzem l'operador == per a la comparació s1 i s2, el resultat és cert, ja que tots dos tenen les mateixes adreces al corda piscina constant.
  • Utilitzant iguals, el resultat és cert perquè només compara els valors donats a s1 i s2.

Pool de cadenes de Java

s1 = HOLA

s2 = HOLA

Java Heap

s3 = HOLA

Entenem els dos operadors en detall:

Operador d'igualtat(==)

Podem aplicar operadors d'igualtat per a cada tipus primitiu, inclòs el tipus booleà. També podem aplicar operadors d'igualtat per a tipus d'objecte.

Exemple:

== operador a 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>);> >}> }>

>

>

Sortida

false false true true>

Si apliquem == per als tipus d'objectes, allà hauria de ser la compatibilitat entre els tipus d'argument (ja sigui fill a pare o pare a fill o del mateix tipus). En cas contrari, obtindrem un error en temps de compilació.

Exemple:

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

>

>

Sortida:

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

Java String equals() Mètode

A Java, el Mètode String equals(). compara les dues cadenes donades en funció de les dades/contingut de la cadena. Si tots els continguts de les dues cadenes són iguals, això torna veritable . Si tots els caràcters no coincideixen, aleshores retorna fals .

declaració java switch

Sintaxi:

Sintaxi : públic booleà igual (Object anotherObject)

Paràmetre :

  • un altre objecte- Cadena per comparar

Devolucions:

  • Valor booleà :
    • veritat- Si les cordes són iguals
    • fals- si les cordes no són iguals

Exemple:

El mètode String equals() a 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));> >}> }>

>

>

Sortida:

true false false false true>

Explicació: Aquí, estem utilitzant el mètode .equals per comprovar si dos objectes contenen les mateixes dades o no.

  • A l'exemple anterior, creem 3 objectes Thread i 2 objectes String.
  • En la primera comparació, comprovem si t1 == t3 o no. Com sabem tots dos t1 i t3 apunten al mateix objecte . Per això torna veritat.
  • En la segona comparació, estem utilitzant l'operador == per comparar els objectes de cadena i no el contingut dels objectes. Aquí, tots dos objectes són diferents i, per tant, el resultat d'aquesta comparació és Fals.
  • Quan comparem 2 objectes String mitjançant l'operador equals(), comprovem que els dos objectes contenen les mateixes dades o no.
  • Tots dos objectes contenen la mateixa cadena, és a dir, GEEKS. Per això torna veritat.

Llegeix també:

  • Mètode Character.equals() a Java amb exemples
  • ==, equals(), compareTo(), equalsIgnoreCase() i compare()

Conclusió

El mètode Java string equals() i l'operador == s'utilitzen per comparar cadenes a Java. En aquest tutorial hem tractat l'operador == i el mètode String equals() a Java amb exemples.

  Read More     String Methods in Java>

Diferència entre el mètode == i .equals() - Preguntes freqüents

1. Quina diferència hi ha entre str1 == str2 i str1 és igual a str2?

A Java, str1==str2 retornarà true si str1 i str2 són cadenes amb el mateix contingut. Això es deu al fet que les cadenes amb el mateix contingut s'emmagatzemen a la mateixa ubicació.

str1.equals(str2) retornarà true si str1 i str 2 són objectes de cadena diferents, però tenen el mateix contingut.

2. Quina diferència hi ha entre == i equals en la comparació de cadenes?

El mètode string equals(). compara dues cadenes i retorna true si tots els caràcters coincideixen en ambdues cadenes, en cas contrari retorna false.

L'operador == compara la referència o la ubicació de memòria dels objectes d'un munt, tant si apunten a la mateixa ubicació com si no.

3. Quines són les regles del mètode equals()?

  1. Reflexivitat: Per a qualsevol objecte x, x.equals(x) sempre hauria de retornar cert.
  2. Simetria : Si x.equals(y) retorna cert, aleshores y.equals(x) també ha de retornar cert.
  3. Transitivitat : Si x.equals(y) i y.equals(z) són certs, aleshores x.equals(z) també ha de ser cert.
  4. Coherència : Les invocacions múltiples de x.equals(y) haurien de retornar el mateix resultat.
  5. No nul·litat: El mètode equals() mai no hauria de tornar true en comparació amb null.