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.
