Se sei come me, quando ho iniziato a usare Java, volevo usare l'operatore "==" per verificare se due istanze String fossero uguali, ma nel bene o nel male, non è il modo corretto di farlo in Java.
In questo tutorial mostrerò diversi modi per confrontare correttamente le stringhe Java, a partire dall'approccio che uso la maggior parte delle volte. Alla fine di questo tutorial di confronto delle stringhe Java, parlerò anche del motivo per cui l'operatore "==" non funziona quando si confrontano le stringhe Java.
Opzione 1: confronto delle stringhe Java con il metodo equals Il
più delle volte (forse il 95% delle volte) confronto le stringhe con il metodo equals della classe String Java, in questo modo:
if (string1.equals(string2))
Questo metodo String uguale esamina le due stringhe Java e se contengono esattamente la stessa stringa di caratteri, vengono considerate uguali.
Dando un'occhiata a un rapido esempio di confronto di stringhe con il metodo equals, se il seguente test fosse eseguito, le due stringhe non sarebbero considerate uguali perché i caratteri non sono esattamente gli stessi (il caso dei caratteri è diverso):
String string1 = "foo";
String string2 = "FOO";
if (string1.equals(string2))
{
// this line will not print because the
// java string equals method returns false:
System.out.println("The two strings are the same.")
}
Ma quando le due stringhe contengono esattamente la stessa stringa di caratteri, il metodo equals restituirà true, come in questo esempio:
String string1 = "foo";
String string2 = "foo";
// test for equality with the java string equals method
if (string1.equals(string2))
{
// this line WILL print
System.out.println("The two strings are the same.")
}
Opzione 2: confronto delle stringhe con il metodo equalsIgnoreCase
In alcuni test di confronto delle stringhe vorrai ignorare se le stringhe sono maiuscole o minuscole. Quando si desidera verificare l'uguaglianza delle stringhe in questo modo senza distinzione tra maiuscole e minuscole, utilizzare il metodo equalsIgnoreCase della classe String, in questo modo:
String string1 = "foo";
String string2 = "FOO";
// java string compare while ignoring case
if (string1.equalsIgnoreCase(string2))
{
// this line WILL print
System.out.println("Ignoring case, the two strings are the same.")
}
Opzione 3: confronto delle stringhe Java con il metodo compareTo
Esiste anche un terzo modo meno comune per confrontare le stringhe Java, ed è con il metodo compareTo della classe String. Se le due stringhe sono esattamente le stesse, il metodo compareTo restituirà un valore pari a 0 (zero). Ecco un breve esempio di come appare questo approccio al confronto di stringhe:
String string1 = "foo bar";
String string2 = "foo bar";
// java string compare example
if (string1.compareTo(string2) == 0)
{
// this line WILL print
System.out.println("The two strings are the same.")
}
Mentre sto scrivendo su questo concetto di uguaglianza in Java, è importante notare che il linguaggio Java include un metodo uguale nella classe di oggetti Java di base. Ogni volta che stai creando i tuoi oggetti e vuoi fornire un mezzo per vedere se due istanze del tuo oggetto sono "uguali", dovresti sovrascrivere (e implementare) questo metodo uguale nella tua classe (nello stesso modo in cui il linguaggio Java fornisce questo comportamento di uguaglianza / confronto nel metodo String equals).
Puoi dare un'occhiata a this ==, .equals (), compareTo () e compare ()