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:
- 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.
- 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.
- 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 dataSortida
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()?
- Reflexivitat: Per a qualsevol objecte x, x.equals(x) sempre hauria de retornar cert.
- Simetria : Si x.equals(y) retorna cert, aleshores y.equals(x) també ha de retornar cert.
- Transitivitat : Si x.equals(y) i y.equals(z) són certs, aleshores x.equals(z) també ha de ser cert.
- Coherència : Les invocacions múltiples de x.equals(y) haurien de retornar el mateix resultat.
- No nul·litat: El mètode equals() mai no hauria de tornar true en comparació amb null.