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.

  • ๐ŸŸฐ String equals(): Confronta due valori stringa per verificarne l'uguaglianza, distinguendo tra maiuscole e minuscole, e restituisce true o false.
  • ๐Ÿ“ฆ Oggetti equals(): Confronta in modo sicuro due stringhe, trattando due valori nulli come uguali.
  • ๐Ÿ”ค compareTo(): Confronta le stringhe in ordine lessicografico, restituendo zero, un numero negativo o un numero positivo.
  • ๐Ÿงฐ Metodi di StringUtils: Le funzioni equals() e equalsAny() di Apache Commons confrontano le stringhe e gestiscono i valori null in modo appropriato.
  • โš ๏ธ == Operare: Confronta i riferimenti agli oggetti, non il loro contenuto, quindi non dovrebbe essere utilizzato per il confronto di valori.

Come confrontare due stringhe in Java

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.

DOMANDE FREQUENTI

Sรฌ. Gli assistenti basati sull'IA possono suggerire equals, compareTo o StringUtils in base al tuo obiettivo e segnalare l'errore comune di ==. Dovresti comunque confermare la scelta con dei test sui tuoi dati specifici.

Sรฌ. Gli strumenti di intelligenza artificiale rilevano l'uso improprio di == per il confronto di contenuti e suggeriscono invece equals o equalsIgnoreCase. Questo aiuta a ridurre i piccoli errori di uguaglianza, comuni per chi รจ alle prime armi con le stringhe.

L'operatore == confronta i riferimenti agli oggetti, non il loro contenuto. Due stringhe con lo stesso valore possono avere riferimenti diversi, quindi == potrebbe restituire false. Per un confronto affidabile dei valori, utilizzare equals().

Il metodo equals() รจ sensibile alle maiuscole e minuscole, quindi โ€œGuru"99" e "GURU99" non sono uguali. Il metodo equalsIgnoreCase() confronta le stringhe ignorando le differenze tra maiuscole e minuscole, restituendo true per entrambe.

Riassumi questo post con: