logo

Differenza tra il confronto di String utilizzando il metodo == e .equals() in Java

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:

  1. La differenza principale tra il Metodo .equals() e il == operatore è che uno è un metodo e l'altro è l'operatore.
  2. 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.
  3. 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()?

  1. Riflessività: Per qualsiasi oggetto x, x.equals(x) dovrebbe sempre restituire true.
  2. Simmetria : Se x.equals(y) restituisce vero, anche y.equals(x) deve restituire vero.
  3. Transitività : Se x.equals(y) e y.equals(z) sono entrambi veri, allora anche x.equals(z) deve essere vero.
  4. Consistenza : Più invocazioni di x.equals(y) dovrebbero restituire lo stesso risultato.
  5. Non nullità: Il metodo equals() non dovrebbe mai restituire true se confrontato con null.