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 ==
Il tuo web hosting come mai prima d'ora
  • 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)
java

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

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

L’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
Hai trovato questo articolo utile?
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.
Page top