I tre metodi principali per confrontare stringhe in Java
In Java esistono tre modi per confrontare le stringhe. Oltre all’opzione Java equals() puoi usare l’operatore == o il metodo Java compareTo().
Come si confrontano le stringhe in Java?
Confrontare dati primitivi in Java usando l’operatore Java == è molto semplice. Se invece vogliamo mettere a confronto stringhe in Java dobbiamo svolgere un’altra operazione. In realtà anche in questo caso sarebbe possibile usare l’operatore ==, tuttavia questo metodo non mette a confronto il contenuto delle due stringhe, bensì solo il riferimento al rispettivo oggetto. In alcuni casi è proprio quello che vogliamo fare. In altre situazioni, invece, per ottenere il risultato desiderato dobbiamo ricorrere a un altro metodo. Fortunatamente, il linguaggio di programmazione Java offre delle alternative. Queste le più comuni:
- Java equals()
- Java compareTo() per stringhe
- L’operatore Java ==
- Disponibilità garantita al 99,99%
- Dominio, SSL ed e-mail inclusi
- Assistenza 24/7 in lingua italiana
Il metodo Java equals()
Il modo più semplice e pratico per confrontare il contenuto di due stringhe in Java è utilizzare equals(). Questo metodo mette a confronto i valori delle due stringhe. Se la corrispondenza fra le stringhe è esatta, il metodo restituisce il valore “true”. Se invece le due stringhe differiscono anche solo di poco, il risultato sarà “false”. La sintassi del metodo è la seguente:
public boolean equals(Oggetto altroOggetto)javaCon il seguente esempio puoi capire più facilmente come funziona il metodo. A tal proposito creiamo tre stringhe e mettiamo a confronto la prima con le altre due. Lo snippet di codice è il seguente:
public class Main {
public static void main(String[] args) {
String string1 = "Questa è una stringa";
String string2 = "Questa è una stringa";
String string3 = "Questa è una stringa diversa";
System.out.println(string1.equals(string2));
System.out.println(string1.equals(string3));
}
}javaUsando il comando Java System.out.println, l’output sarà il seguente:
true
falsejavastring1 e string2 sono identiche, mentre invece string3 è diversa dalle altre due. In questo esempio, la differenza si vede a occhio nudo, ma nella pratica esistono numerose stringhe che differiscono in modo quasi impercettibile. In questo caso Java equals() è un metodo eccellente per prevenire errori.
Java compareTo() per stringhe
Il secondo metodo è un po’ più complicato, ma funziona altrettanto bene. Java compareTo() confronta le stringhe in base ai valori Unicode dei caratteri che compongono la stringa. In questo modo si mettono a confronto i singoli caratteri. Se le due stringhe sono identiche, il metodo restituisce 0. Se la prima stringa è più corta della seconda, il valore dell’output sarà negativo. In caso contrario, quando la prima stringa è più lunga, il valore dell’output sarà positivo. La sintassi del metodo è la seguente:
public int compareTo(Stringa altraStringa)javaPer spiegare meglio come funziona il metodo, basta fare un semplice esempio. Anche questa volta creiamo tre stringhe e compariamo la prima con le altre due. Questo è lo snippet di codice che ne risulta:
public class Main {
public static void main(String[] args) {
String string1 = "Questa è una stringa";
String string2 = "Questa è una stringa";
String string3 = "Questa è una stringa diversa";
System.out.println(string1.compareTo(string2));
System.out.println(string1.compareTo(string3));
}
}javaSe usiamo il comando System.out.println, l’output sarà:
0
-20javaSe desideri usare Java compare(To) per le stringhe senza tenere in considerazione maiuscole e minuscole, puoi usare il metodo compareToIgnoreCase(). Il codice si scrive così:
public class Main { public static void main(String[] args) { String string1 = “Questa è una stringa”; String string2 = “Questa è una stringa”; String string3 = “QUESTA È UNA STRINGA”; System.out.println(string1.compareToIgnoreCase(string2)); System.out.println(string1.compareToIgnoreCase(string3)); } }
Di conseguenza l’output sarà:
0
0javaL’operatore Java ==
Come già accennato, è possibile utilizzare l’operatore == per confrontare due stringhe tra loro. Tuttavia, questo operatore mette a confronto i singoli riferimenti e non i valori effettivi delle stringhe. Per chiarire ulteriormente questo concetto, facciamo un altro esempio:
public class Main { public static void main(String[] args) { String string1 = “Questa è una stringa”; String string2 = “Questa è una stringa”; String string3 = new String (“Questa è una stringa”); System.out.println(string1string2); System.out.println(string1string3); } }
Poiché string1 e string2 fanno riferimento alla stessa istanza, l’output sarà “true”. string3, invece, fa riferimento a un’istanza differente. Pertanto, l’output sarà “false”, anche se il valore, ovvero il testo della terza stringa, è formalmente identico alle altre due.
true
falsejava
