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 ==
- Certificato SSL e protezione DDoS
- Velocità, flessibilità e scalabilità
- Dominio e consulente personale
- 1 anno gratis del gestionale di fatturazione elettronica FlexTax
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
false
javastring1
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
-20
javaSe 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
0
javaL’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
false
java