# 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](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/tipi-di-dati-in-java/) usando l’[operatore Java](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/operatori-java/) `==` è molto semplice. Se invece vogliamo mettere a confronto [stringhe in Java](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/java-string/) 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](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/linguaggi-programmazione-web/) Java offre delle alternative. Queste le più comuni:

- Java equals()
- Java compareTo() per stringhe
- L’operatore Java ==

## 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:

```java
public boolean equals(Oggetto altroOggetto)
```

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:

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

Usando il [comando Java](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/comandi-java/) `System.out.println`, l’output sarà il seguente:

```java
true
false
```

`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:

```java
public int compareTo(Stringa altraStringa)
```

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:

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

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

```java
0
-20
```

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à:

```java
0
0
```

## 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.

```java
true
false
```


This is a markdown version of: [https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/java-string-compare/](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/java-string-compare/) for AI/LLM consumption.