Entrambi i metodo equals() e il == operatore vengono utilizzati per confrontare due oggetti in Java.
IL Metodo Java string equals() , confronta due stringhe e restituisce true se tutti i caratteri corrispondono in entrambe le stringhe, altrimenti restituisce false.
IL == operatore confronta il riferimento o la posizione di memoria degli oggetti in un heap, indipendentemente dal fatto che puntino o meno alla stessa posizione.
Ogni volta che creiamo un oggetto utilizzando l'operatore nuovo , creerà un file nuova posizione di memoria per quell'oggetto. Quindi utilizziamo l'operatore == per verificare che la posizione di memoria o l'indirizzo di due oggetti siano uguali o meno.
In generale, sia gli operatori equals() che == in Giava sono usati per confrontare oggetti per verificare l'uguaglianza, ma ecco alcune delle differenze tra i due:
- La differenza principale tra il Metodo .equals() e il == operatore è che uno è un metodo e l'altro è l'operatore.
- Possiamo usare == operatori per il confronto dei riferimenti ( confronto degli indirizzi ) e il metodo .equals() per confronto dei contenuti . In parole semplici, == controlla se entrambi gli oggetti puntano alla stessa posizione di memoria mentre .equals() valuta il confronto dei valori negli oggetti.
- Se una classe non lo fa sovrascrivere il metodo equals , quindi, per impostazione predefinita, utilizza il metodo equals(Object o) della classe genitore più vicina che ha sovrascritto questo metodo. **Vedere Perché eseguire l'override del metodo equals(Object) e hashCode()? in dettaglio.
Esempio:
Metodo String equals() e operatore == in Java.
Giava
// 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> >}> }> |
>
>Produzione
true false true true>
Spiegazione: Qui creiamo due oggetti, vale a dire s1 e s2.
- Sia s1 che s2 si riferiscono agli stessi oggetti.
- Quando usiamo l'operatore == per il confronto s1 e s2, il risultato è vero poiché entrambi hanno gli stessi indirizzi nel corda piscina costante.
- Usando uguale, il risultato è vero perché confronta solo i valori indicati in s1 e s2.
Pool di stringhe Java
| s1 = CIAO |
| s2 = CIAO |
Mucchio Java
| s3 = CIAO |
Cerchiamo di comprendere entrambi gli operatori in dettaglio:
Operatore di uguaglianza(==)
Possiamo applicare operatori di uguaglianza per ogni tipo primitivo, incluso il tipo booleano. Possiamo anche applicare operatori di uguaglianza per i tipi di oggetto.
Esempio:
== operatore in Java.
Giava
forma completa di i d e
// 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>);> >}> }> |
>
albero binario
>Produzione
false false true true>
Se applichiamo == per i tipi di oggetto allora ecco dovrebbe essere la compatibilità tra i tipi di argomento (o da figlio a genitore o da genitore a figlio o dello stesso tipo). Altrimenti, riceveremo un errore in fase di compilazione.
Esempio:
Giava
// 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);> >}> }> |
>
>
Produzione:
false false // error: incomparable types: Thread and String>
Metodo Java String equals()
In Giava, il Metodo String equals() confronta le due stringhe fornite in base ai dati/contenuto della stringa. Se tutto il contenuto di entrambe le stringhe è lo stesso, it restituisce vero . Se tutti i caratteri non corrispondono, allora it restituisce falso .
Sintassi:
Sintassi : booleano pubblico uguale a (Oggetto un altroOggetto)
Parametro :
- un altrooggetto- Stringa da confrontare
Ritorna:
- Valore booleano :
- VERO- Se le stringhe sono uguali
- falso- se le stringhe non sono uguali
Esempio:
Metodo String equals() in Java
Giava
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));> >}> }> |
>
>
Produzione:
true false false false true>
Spiegazione: Qui utilizziamo il metodo .equals per verificare se due oggetti contengono gli stessi dati o meno.
- Nell'esempio sopra, creiamo 3 oggetti Thread e 2 oggetti String.
- Nel primo confronto controlliamo se t1 == t3 oppure no. Come sappiamo entrambi t1 e t3 puntano a stesso oggetto . Ecco perché restituisce true.
- Nel secondo confronto, utilizziamo l'operatore == per confrontare gli oggetti stringa e non il contenuto degli oggetti. Qui entrambi gli oggetti sono diversi e quindi il risultato di questo confronto è Falso.
- Quando confrontiamo 2 oggetti String con l'operatore equals(), controlliamo che entrambi gli oggetti contengano o meno gli stessi dati.
- Entrambi gli oggetti contengono la stessa stringa, ovvero GEEKS. Ecco perché restituisce true.
Leggi anche:
- Metodo Character.equals() in Java con esempi
- ==, equals(), compareTo(), equalsIgnoreCase() e compare()
Conclusione
Il metodo Java string equals() e l'operatore == sono entrambi utilizzati per confrontare le stringhe in Java. In questo tutorial abbiamo trattato l'operatore == e il metodo String equals() in Java con esempi.
metodo Java uguale
Read More String Methods in Java>
Differenza tra il metodo == e .equals() - Domande frequenti
1. Qual è la differenza tra str1 == str2 e str1 uguale a str2?
In Java, str1==str2 restituirà true se str1 e str2 sono stringhe con lo stesso contenuto. Questo perché le stringhe con lo stesso contenuto vengono archiviate nella stessa posizione.
str1.equals(str2) restituirà true se str1 e str 2 sono oggetti stringa diversi, ma hanno lo stesso contenuto.
2. Qual è la differenza tra == ed è uguale nel confronto tra stringhe?
IL metodo stringa uguale() confronta due stringhe e restituisce true se tutti i caratteri corrispondono in entrambe le stringhe, altrimenti restituisce false.
L'operatore == confronta il riferimento o la posizione di memoria degli oggetti in un heap, indipendentemente dal fatto che puntino o meno alla stessa posizione.
3. Quali sono le regole del metodo equals()?
- Riflessività: Per qualsiasi oggetto x, x.equals(x) dovrebbe sempre restituire true.
- Simmetria : Se x.equals(y) restituisce vero, anche y.equals(x) deve restituire vero.
- Transitività : Se x.equals(y) e y.equals(z) sono entrambi veri, allora anche x.equals(z) deve essere vero.
- Consistenza : Più invocazioni di x.equals(y) dovrebbero restituire lo stesso risultato.
- Non nullità: Il metodo equals() non dovrebbe mai restituire true se confrontato con null.