Come confrontare due stringhe in Java
โก Riepilogo intelligente
Confrontare due stringhe in Java ร possibile farlo con diversi metodi che confrontano una sequenza di caratteri per verificarne l'uguaglianza o l'ordine. Questa risorsa illustra sette approcci, tra cui String equals, Objects equals, compareTo, i metodi di StringUtils, l'operatore == e un metodo di confronto personalizzato, ciascuno con esempi.

Metodi per confrontare stringhe in Java
Java fornisce diversi metodi che รจ possibile sfruttare per confrontare due stringhe Java. Confronto tra stringhe in Java รจ una funzionalitร che abbina una sequenza di caratteri a una stringa.
Per imparare a confrontare le stringhe in Javaร possibile utilizzare i metodi forniti dalle seguenti classi:
- Classe String del pacchetto java.lang.
- Classe Objects del pacchetto java.util.
- Classe StringUtils dal pacchetto org.apache.commons.lang3.
Molti di questi Java I metodi di confronto tra stringhe offrono soluzioni per ignorare la distinzione tra maiuscole e minuscole. In questo tutorial, imparerai i diversi metodi che puoi utilizzare per confrontare due stringhe.
Metodo 1: metodo String equals()
Migliori Java Corda metodo equals() confronta due oggetti stringa per valori stringa uguali.
Sintassi:
public boolean equals(Object anObject)
parametri del metodo equals():
anObject โ La stringa dell'argomento per confrontare le stringhe.
tipi restituiti dal metodo equals()
- Restituisce vero se la stringa letterale fornita รจ la stessa della prima stringa.
- Restituisce falso se la prima stringa non รจ la stessa stringa dell'argomento.
Esempio:
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: "+stringOne.equals(stringTwo));
String stringThree = "GURU99";
System.out.println("is Guru99 equal to GURU99: "+stringOne.equals(stringThree));
}
}
Uscita prevista:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Spiegazione:
- Hai ottenuto false nell'ultimo output perchรฉ l'oggetto specificato ha un caso diverso.
Nota: Utilizza il metodo equals() della classe String per confrontare stringhe distinguendo tra maiuscole e minuscole. Utilizza il metodo "equalsIgnoreCase" per confrontare oggetti stringa ignorando la distinzione tra maiuscole e minuscole.
Metodo 2: metodo Oggetti equals()
Migliori Java Oggetti uguali() Il metodo confronta due oggetti stringa per verificare se hanno gli stessi valori.
Sintassi:
public static boolean equals(Object a, Object b)
parametri del metodo equals()
a โ Stringa di argomento per il primo oggetto stringa.
b โ Stringa di argomento per il secondo oggetto stringa.
tipi restituiti dal metodo equals()
- Restituisce vero se i valori letterali della stringa sono uguali. Anche il passaggio di un valore nullo nei due argomenti restituirร true.
- Restituisce false se i valori letterali della stringa non sono uguali.
Esempio:
import java.util.Objects; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringOne, stringTwo)); String stringThree = null; String stringFour = null; System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringThree, stringFour)); } }
Produzione:
is Guru99 equal to Guru99: true is Guru99 equal to Guru99: true
Spiegazione:
Da questo esempio si puรฒ notare che l'output รจ un valore booleano true, poichรฉ le stringhe confrontate sono uguali.
Metodo 3: metodo String compareTo()
Migliori Java Stringa confrontaTo() metodo confronta due stringhe in ordine alfabetico. Di solito รจ definito ordine lessicografico.
Sintassi:
public int compareTo(String str)
parametri del metodo compareTo()
str โ La stringa da confrontare con la stringa corrente.
Il metodo compareTo() restituisce
- 0 โ Restituisce zero se l'oggetto specificato รจ uguale alla stringa corrente.
- < 0 โ Restituisce un numero inferiore a zero se questa stringa รจ inferiore all'oggetto specificato.
- > 0 โ Restituisce un numero maggiore di zero se questa stringa supera la stringa fornita.
Esempio:
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: " + stringOne.compareTo(stringTwo));
String stringThree = "GURU99";
// u = 117, U = 85, result = 117-85 = 32
System.out.println("is Guru99 equal to GURU99: " + stringOne.compareTo(stringThree));
}
}
Uscita prevista:
is Guru99 equal to Guru99: 0 is Guru99 equal to GURU99: 32
Spiegazione:
Il primo risultato restituisce un valore pari a zero, poichรฉ la prima e la seconda stringa sono uguali.
Il secondo risultato restituisce un valore di trentadue, poichรฉ i caratteri sono diversi.
Nota: Per ignorare la distinzione tra maiuscole e minuscole, รจ possibile utilizzare il metodo โcompareToIgnoreCaseโ.
Metodo 4: metodo StringUtils equals()
Migliori Java StringUtils รจ uguale a() metodo confronta l'uguaglianza di due sequenze di caratteri.
Assicurati di aver aggiunto la libreria "org.apache.commons.lang3" al tuo programma. Questo ti permetterร di confrontare le stringhe utilizzando i metodi di StringUtils.
Per i progetti Maven, usa questo guida per aggiungere la libreria al progetto.
Tuttavia, se vuoi aggiungere la libreria senza alcuno strumento di compilazione, usa questo guida.
Sintassi:
public static boolean equals(CharSequence cs1, CharSequence cs2)
Parametri del metodo StringUtils equals()
- cs1 โ Una sequenza di caratteri per il primo argomento.
- cs2 โ Una sequenza di caratteri per il secondo argomento.
Il metodo StringUtils equals() restituisce
- Restituisce true se il confronto tra le stringhe รจ uguale. Questo vale anche se si passa un valore nullo in entrambi gli argomenti.
- Restituisce falso se il confronto tra stringhe non รจ uguale.
Esempio:
import org.apache.commons.lang3.StringUtils; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + StringUtils.equals(stringOne, stringTwo)); String stringThree = "GURU99"; System.out.println("is Guru99 equal to GURU99: " + StringUtils.equals(stringOne, stringThree)); } }
Produzione:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Spiegazione:
Poichรฉ il contenuto della prima e della seconda stringa รจ uguale, il risultato restituisce true.
ร possibile utilizzare il metodo "equalsIgnoreCase" per ignorare il caso.
Metodo 5: metodo StringUtils equalsAny()
Migliori Java StringUtils รจ uguale ad Any() Il metodo controlla se esiste una stringa negli argomenti.
Sintassi:
public static boolean equalsAny(CharSequence string, CharSequence... searchStrings)
Parametri del metodo StringUtils equalsAny()
- string โ Il valore stringa per il primo argomento. L'argomento puรฒ anche avere un valore null.
- searchStrings โ Un insieme di argomenti stringa affinchรฉ il metodo possa verificare se รจ presente la stringa del primo argomento.
Il metodo StringUtils equalsAny() restituisce
- Restituisce true se la stringa da confrontare esiste nel numero variabile di stringhe di ricerca. Questo vale anche se entrambi gli argomenti sono null.
- Restituisce falso se la stringa da trovare non corrisponde ad alcuna stringa nel numero variabile di stringhe di ricerca.
Esempio:
import org.apache.commons.lang3.StringUtils; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String[] stringTwo = new String[] { "Guru99", "JavaGuru99" }; System.out.println("is Guru99 available: " + StringUtils.equalsAny(stringOne, stringTwo)); String[] stringThree = new String[] { "GURU99", "JavaGuru99" }; System.out.println("is GURU99 available: " + StringUtils.equalsAny(stringOne, stringThree)); } }
Produzione:
is Guru99 available: true is GURU99 available: false
Spiegazione:
Poichรฉ il contenuto della prima stringa e della seconda stringa sono uguali, il risultato restituisce true. ร possibile utilizzare il metodo "equalsAnyIgnoreCase" per ignorare il caso.
Metodo 6: utilizzo dell'operatore ==
L'operatore == sulle stringhe controlla se i riferimenti agli oggetti hanno lo stesso indirizzo.
Esempio:
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 == to Guru99: " + (stringOne == stringTwo));
String stringThree = "GURU99";
System.out.println("is Guru99 == to GURU99: " + (stringOne == stringThree));
}
}
Uscita prevista:
is Guru99 == to Guru99: true is Guru99 == to GURU99: false
Spiegazione:
- Il primo risultato restituisce un valore booleano true. Le stringhe con lo stesso contenuto vengono aggiunte allo stesso pool di stringhe, pertanto condividono un unico indirizzo.
- Il secondo risultato restituisce un valore booleano false. Gli oggetti hanno contenuti diversi, il che si traduce in pool di stringhe diversi. Questo significa che le stringhe hanno riferimenti a oggetti separati; pertanto l'output รจ false.
Metodo 7: creazione di un metodo personalizzato per confrontare due stringhe Java
Creare un metodo che confronti due stringhe utilizzando l'ordine lessicografico.
Sintassi:
public static int compareTwoStrings(String str1, String str2)
Parametri del metodo personalizzato
- str1 โ La stringa da confrontare.
- str2 โ La stringa con cui confrontare.
Restituzioni del metodo personalizzato
- 0 โ Restituisce zero se la prima stringa รจ uguale alla seconda stringa.
- < 0 โ Restituisce un numero inferiore a zero se la prima stringa รจ inferiore alla seconda stringa.
- > 0 โ Restituisce un numero maggiore di zero se la prima stringa รจ maggiore della seconda stringa.
Esempio:
public class CompareTwoStrings {
public static int compareTwoStrings(String stringOne, String stringTwo) {
int lengthOfStringOne = stringOne.length();
int lengthOfStringTwo = stringTwo.length();
int minStringLength = Math.min(lengthOfStringOne, lengthOfStringTwo);
for (int i = 0; i < minStringLength; i++) {
char stringOneCharValue = stringOne.charAt(i);
char stringTwoCharValue = stringTwo.charAt(i);
if (stringOneCharValue != stringTwoCharValue) {
return stringOneCharValue - stringTwoCharValue;
}
}
if (lengthOfStringOne != lengthOfStringTwo) {
return lengthOfStringOne - lengthOfStringTwo;
} else {
return 0;
}
}
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: " + compareTwoStrings(stringOne, stringTwo));
}
}
Uscita prevista:
is Guru99 equal to Guru99: 0
Spiegazione:
Il risultato ha restituito un valore pari a zero, il che significa che la funzione personalizzata funziona come previsto.
