In Java esistono tre modi per con­fron­ta­re le stringhe. Oltre all’opzione Java equals() puoi usare l’operatore == o il metodo Java compareTo().

Come si con­fron­ta­no le stringhe in Java?

Con­fron­ta­re dati primitivi in Java usando l’operatore Java == è molto semplice. Se invece vogliamo mettere a confronto stringhe in Java dobbiamo svolgere un’altra ope­ra­zio­ne. 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 ri­fe­ri­men­to al ri­spet­ti­vo oggetto. In alcuni casi è proprio quello che vogliamo fare. In altre si­tua­zio­ni, invece, per ottenere il risultato de­si­de­ra­to dobbiamo ricorrere a un altro metodo. For­tu­na­ta­men­te, il lin­guag­gio di pro­gram­ma­zio­ne Java offre delle al­ter­na­ti­ve. Queste le più comuni:

  • Java equals()
  • Java compareTo() per stringhe
  • L’operatore Java ==
Web Hosting
Diventa il n°1 della rete con il provider di hosting n°1 in Europa
  • Di­spo­ni­bi­li­tà garantita al 99,99%
  • Dominio, SSL ed e-mail inclusi
  • As­si­sten­za 24/7 in lingua italiana

Il metodo Java equals()

Il modo più semplice e pratico per con­fron­ta­re il contenuto di due stringhe in Java è uti­liz­za­re equals(). Questo metodo mette a confronto i valori delle due stringhe. Se la cor­ri­spon­den­za fra le stringhe è esatta, il metodo re­sti­tui­sce il valore “true”. Se invece le due stringhe dif­fe­ri­sco­no anche solo di poco, il risultato sarà “false”. La sintassi del metodo è la seguente:

public boolean equals(Oggetto altroOggetto)
java

Con il seguente esempio puoi capire più fa­cil­men­te 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));
	}
}
java

Usando il comando Java System.out.println, l’output sarà il seguente:

true
false
java

string1 e string2 sono identiche, mentre invece string3 è diversa dalle altre due. In questo esempio, la dif­fe­ren­za si vede a occhio nudo, ma nella pratica esistono numerose stringhe che dif­fe­ri­sco­no in modo quasi im­per­cet­ti­bi­le. In questo caso Java equals() è un metodo ec­cel­len­te per prevenire errori.

Java compareTo() per stringhe

Il secondo metodo è un po’ più com­pli­ca­to, ma funziona al­tret­tan­to bene. Java compareTo() confronta le stringhe in base ai valori Unicode dei caratteri che com­pon­go­no la stringa. In questo modo si mettono a confronto i singoli caratteri. Se le due stringhe sono identiche, il metodo re­sti­tui­sce 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)
java

Per spiegare meglio come funziona il metodo, basta fare un semplice esempio. Anche questa volta creiamo tre stringhe e com­pa­ria­mo 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));
	}
}
java

Se usiamo il comando System.out.println, l’output sarà:

0
-20
java

Se desideri usare Java compare(To) per le stringhe senza tenere in con­si­de­ra­zio­ne 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.com­pa­re­ToI­gno­re­Ca­se(string2)); System.out.println(string1.com­pa­re­ToI­gno­re­Ca­se(string3)); } }

Di con­se­guen­za l’output sarà:

0
0
java

L’operatore Java ==

Come già accennato, è possibile uti­liz­za­re l’operatore == per con­fron­ta­re due stringhe tra loro. Tuttavia, questo operatore mette a confronto i singoli ri­fe­ri­men­ti e non i valori effettivi delle stringhe. Per chiarire ul­te­rior­men­te 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 ri­fe­ri­men­to alla stessa istanza, l’output sarà “true”. string3, invece, fa ri­fe­ri­men­to a un’istanza dif­fe­ren­te. Pertanto, l’output sarà “false”, anche se il valore, ovvero il testo della terza stringa, è for­mal­men­te identico alle altre due.

true
false
java
Vai al menu prin­ci­pa­le