GeeksforGeeks

In generale sia equals() che l’operatore “==” in Java sono usati per confrontare oggetti per controllare l’uguaglianza ma qui ci sono alcune differenze tra i due:

  1. La differenza principale tra il metodo .equals() e l’operatore == è che uno è un metodo e l’altro un operatore.
  2. Possiamo usare gli operatori == per il confronto dei riferimenti (confronto degli indirizzi) e il metodo .equals() per il confronto dei contenuti. In parole semplici, == controlla se entrambi gli oggetti puntano alla stessa locazione di memoria mentre .equals() valuta il confronto dei valori negli oggetti.
  3. Se una classe non sovrascrive il metodo equals, allora per default usa il metodo equals(Object o) della classe madre più vicina che ha sovrascritto questo metodo. Vedi questo per i dettagli
  4. Esempio di codifica:

    public class Test {
    public static void main(String args)
    {
    String s1 = new String("HELLO");
    String s2 = new String("HELLO");
    System.out.println(s1 == s2);
    System.out.println(s1.equals(s2));
    }
    }

    
    

    
    

    Output:

    falsetrue

    Spiegazione: Qui stiamo creando due oggetti: s1 e s2.

    • Entrambi s1 e s2 si riferiscono a oggetti diversi.
    • Quando usiamo l’operatore == per confrontare s1 e s2 il risultato è falso perché entrambi hanno indirizzi diversi in memoria.
    • Utilizzando equals, il risultato è vero perché sta solo confrontando i valori dati in s1 e s2.

Comprendiamo entrambi gli operatori in dettaglio:

Operatore di uguaglianza(==)

Possiamo applicare gli operatori di uguaglianza per ogni tipo primitivo incluso il tipo booleano.

class Test {
public static void main(String args)
{
System.out.println(10 == 20);
System.out.println('a' == 'b');
System.out.println('a' == 97.0);
System.out.println(true == true);
}
}



Output:

falsefalsetruetrue

Se applichiamo == per i tipi di oggetto allora, ci dovrebbe essere compatibilità tra i tipi di argomenti (o da figlio a genitore o da genitore a figlio o stesso tipo). Altrimenti otterremo un errore di compilazione.

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);
System.out.println(t==s);
}
}



Output:

falsefalse// error: incomparable types: Thread and String

.equals()

In Java, il metodo stringa equals() confronta le due stringhe date in base ai dati/contenuto della stringa. Se tutti i contenuti di entrambe le stringhe sono uguali, allora restituisce true. Se tutti i caratteri non corrispondono, allora restituisce false.

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



Output:

truefalsefalsefalsetrue

Spiegazione: Qui stiamo usando il metodo .equals per controllare se due oggetti contengono gli stessi dati o no.

  • Nell’esempio precedente, stiamo creando 3 oggetti Thread e 2 oggetti String.
  • Nel primo confronto, stiamo controllando se t1 == t3 oppure no. Siccome sappiamo che sia t1 che t3 puntano allo stesso oggetto, ecco perché restituisce true.
  • Nel secondo confronto, stiamo usando 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 stiamo confrontando 2 oggetti Stringa con l’operatore .equals() allora stiamo controllando che entrambi gli oggetti contengono gli stessi dati o no.
  • Entrambi gli oggetti contengono la stessa stringa, cioè GEEKS, ecco perché restituisce true.

Questo articolo è stato contribuito da Bishal Kumar Dubey. Se ti piace GeeksforGeeks e vuoi contribuire, puoi anche scrivere un articolo usando contribute.geeksforgeeks.org o inviare il tuo articolo a [email protected]. Vedi il tuo articolo apparire sulla pagina principale di GeeksforGeeks e aiuta altri Geeks.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.