So vergleichen Sie zwei Strings in Java (11 Methoden)

Java bietet verschiedene Methoden, die Sie nutzen können, um zwei Zeichenfolgen in Java zu vergleichen. Der Zeichenfolgenvergleich in Java ist eine Funktion, die eine Zeichenfolge einer Zeichenfolge zuordnet.

Um zu lernen, wie man Strings in Java vergleicht, können Sie die im Folgenden bereitgestellten Methoden verwendenwing Klassen.

  • String-Klasse aus dem Java.lang-Paket.
  • Objects-Klasse aus dem Java.util-Paket.
  • StringUtils-Klasse aus dem Paket org.apache.commons.lang3.

Die meisten dieser Java-Methoden zum Vergleichen von Zeichenfolgen bieten Lösungen zum Ignorieren der Groß-/Kleinschreibung. In diesem Java-Tutoriallernen Sie die verschiedenen Methoden kennen, mit denen Sie zwei Zeichenfolgen vergleichen können.

Methode 1: String-equals()-Methode

Das Java-String equal()-Methode Layout-Dateiares zwei String-Objekte für gleiche String-Werte.

Syntax:

public boolean equals(Object anObject)

Parameter der Methode equal():

anObject – Die Argumentzeichenfolge zum Vergleichen von Zeichenfolgen.

Rückgabetypen der Methode equal()

  • Gibt true zurück, wenn das angegebene String-Literal mit dem ersten String übereinstimmt.
  • Gibt „false“ zurück, wenn die erste Zeichenfolge nicht mit der Argumentzeichenfolge übereinstimmt.

Beispiel:

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

Erwartete Ausgabe:

is Guru99 equal to Guru99: true
is Guru99 equal to GURU99: false

Erläuterung:

  • Sie haben in der letzten Ausgabe „false“ erhalten, weil das angegebene Objekt eine andere Groß-/Kleinschreibung hat.

Note: Verwenden Sie die String-Equals-Methode für den String-Vergleich unter Beachtung der Groß-/Kleinschreibung. Verwenden Sie die Methode „equalsIgnoreCase“, um String-Objekte mit unterschiedlichen String-Werten zu vergleichen.

Methode 2: Objects equal()-Methode

Das Java-Objekte sind gleich() Methode Kompares zwei String-Objekte, um herauszufinden, ob sie dieselben Werte haben.

Syntax:

public static boolean equals(Object a, Object b)

Parameter der Methode equal()

a – Argumentzeichenfolge für das erste Zeichenfolgenobjekt.

b – Argumentzeichenfolge für das zweite Zeichenfolgenobjekt.

Rückgabetypen der Methode equal()

  • Gibt true zurück, wenn die String-Literale gleich sind. Die Übergabe eines Nullwerts in den beiden Argumenten gibt ebenfalls „true“ zurück.
  • Gibt „false“ zurück, wenn die Zeichenfolgenliterale nicht gleich sind.

Beispiel:

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

Ausgang:

is Guru99 equal to Guru99: true
is Guru99 equal to Guru99: true

Erläuterung:

Anhand dieses Beispiels können Sie erkennen, dass die Ausgabe ein boolescher Wert von „true“ ist, da die verglichenen Zeichenfolgen gleich sind.

Methode 3: String-compareTo()-Methode

Das Java-String CompareTo() Methode Kompares zwei Zeichenfolgen in alphabetischer Reihenfolge. Sie wird üblicherweise als lexikografische Ordnung bezeichnet.

Syntax:

public int compareTo(String str)

Parameter der Methode „compareTo()“.

str – Die Zeichenfolge, die mit der aktuellen Zeichenfolge verglichen werden soll.

Die Methode „compareTo()“ gibt zurück

  • 0 – Gibt Null zurück, wenn das angegebene Objekt gleich der aktuellen Zeichenfolge ist.
  • < 0 – Gibt eine Zahl kleiner als Null zurück, wenn diese Zeichenfolge kleiner als das angegebene Objekt ist.
  • > 0 – Gibt eine Zahl größer als Null zurück, wenn diese Zeichenfolge die angegebene Zeichenfolge überschreitet.

Beispiel:

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

Erwartete Ausgabe:

is Guru99 equal to Guru99: 0
is Guru99 equal to GURU99: 32

Erläuterung:

Das erste Ergebnis gibt den Wert Null zurück, da die erste und die zweite Zeichenfolge gleich sind.

Das zweite Ergebnis gibt einen Wert von zweiunddreißig zurück, da die Zeichen unterschiedlich sind.

Hinweis: Um die Fälle zu ignorieren, können Sie die Methode „compareToIgnoreCase“ verwenden.

Methode 4: StringUtils-equals()-Methode

Das Java StringUtils equal() Methode Kompares die Gleichheit zweier Zeichenfolgen.

Stellen Sie sicher, dass Sie die Bibliothek „org.apache.commons.lang3“ zu Ihrem Programm hinzugefügt haben. Dadurch können Sie Zeichenfolgen mithilfe der StringUtil-Methoden vergleichen.

Verwenden Sie dies für Maven-Projekte Guide um die Bibliothek zum Projekt hinzuzufügen.

Wenn Sie die Bibliothek jedoch ohne Build-Tools hinzufügen möchten, verwenden Sie diese Guide.

Syntax:

public static boolean equals(CharSequnce cs1, CharSequence cs2)

StringUtils-equals()-Methodenparameter

  • cs1 – Eine Zeichenfolge für das erste Argument.
  • cs2 – Eine Zeichenfolge für das zweite Argument.

Die Methode „equals()“ von StringUtils gibt zurück

  • Gibt „true“ zurück, wenn der Zeichenfolgenvergleich gleich ist. Dies gilt, wenn Sie in den beiden Argumenten einen Nullwert übergeben.
  • Gibt „false“ zurück, wenn der Zeichenfolgenvergleich nicht gleich ist.

Beispiel:

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

Ausgang:

is Guru99 equal to Guru99: true
is Guru99 equal to GURU99: false

Erläuterung:

Da der Inhalt der ersten und zweiten Zeichenfolge gleich ist, gibt das Ergebnis „true“ zurück.

Sie können die Methode „equalsIgnoreCase“ verwenden, um die Groß-/Kleinschreibung zu ignorieren.

Methode 5: StringUtils equalAny()-Methode

Das Java StringUtils equalAny() Die Methode prüft, ob in den Argumenten eine Zeichenfolge vorhanden ist.

Syntax:

public static boolean equalsAny(CharSequence string, Charsequence… searchStrings)

StringUtils-equalsAny()-Methodenparameter

  • string – Der Stringwert für das erste Argument. Das Argument kann auch einen Nullwert haben.
  • searchStrings – Eine Reihe von Zeichenfolgenargumenten für die Methode, um herauszufinden, ob die erste Argumentzeichenfolge vorhanden ist.

Die StringUtils-Methode equalAny() gibt zurück

  • Gibt „true“ zurück, wenn die zu vergleichende Zeichenfolge in der variablen Anzahl von Suchzeichenfolgen vorhanden ist. Dies gilt, wenn beide Argumente null sind.
  • Gibt „false“ zurück, wenn die zu vergleichende Zeichenfolge mit keiner Zeichenfolge in der variablen Anzahl von Suchzeichenfolgen übereinstimmt.

Beispiel:

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

Ausgang:

is Guru99 available: true
is GURU99 available: false

Erläuterung:

Da der Inhalt der ersten Zeichenfolge und der zweiten Zeichenfolge gleich ist, gibt das Ergebnis „true“ zurück. Sie können die Methode „equalsAnyIgnoreCase“ verwenden, um die Groß-/Kleinschreibung zu ignorieren.

Methode 6: Verwenden von == operaDo.

Das == operator on strings prüft, ob Objektreferenzen dieselbe Adresse haben.

Beispiel:

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

Erwartete Ausgabe:

is Guru99 == to Guru99: true
is Guru99 == to GURU99: false

Erläuterung:

  • Das erste Ergebnis gibt den booleschen Wert „true“ zurück. Zeichenfolgen mit demselben Inhalt werden demselben Zeichenfolgenpool hinzugefügt, daher teilen sich die Zeichenfolgen eine Adresse.
  • Das zweite Ergebnis gibt den booleschen Wert „false“ zurück. Die Objekte haben unterschiedliche Inhalte, wodurch sich andere String-Pools ergeben. Das bedeutet, dass die Strings separate Objektreferenzen haben; Daher ist die Ausgabe falsch.

Methode 7: Erstellen einer benutzerdefinierten Methode zum Vergleichen zweier Zeichenfolgen in Java

Erstellen Sie eine Methode, die kompensiertares zwei Zeichenfolgen in lexikografischer Reihenfolge.

Syntax:

public static int compareTwoStrings(String str1, String str2)

Benutzerdefinierte Methodenparameter

  • str1 – Die zu vergleichende Zeichenfolge.
  • str2 – Die Zeichenfolge, mit der verglichen werden soll.

Benutzerdefinierte Methode gibt zurück

  • 0 – Gibt Null zurück, wenn die erste Zeichenfolge gleich der zweiten Zeichenfolge ist.
  • < 0 – Gibt eine Zahl kleiner als Null zurück, wenn die erste Zeichenfolge kleiner als die zweite Zeichenfolge ist.
  • > 0 – Gibt eine Zahl größer als Null zurück, wenn die erste Zeichenfolge größer als die zweite Zeichenfolge ist.

Beispiel:

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

Erwartete Ausgabe:

is Guru99 equal to Guru99: 0

Erläuterung:

Das Ergebnis ergab den Wert Null, was bedeutet, dass die benutzerdefinierte Funktion wie erwartet funktioniert.

Zusammenfassung:

Die zu verwendende Java-Methode zum Vergleichen zweier Zeichenfolgen hängt von der folgenden Funktion abwing Faktoren.

  • Wunsch, die Kontrolle über Ihre Methode zu haben. Erstellen Sie in diesem Fall eine benutzerdefinierte Methode.
  • Sie können keinen Legacy-Code verwenden. mit Java 6 und niedriger.
  • Die Methode mit optimaler Leistung.
  • Die Art der Daten, mit denen Sie arbeiten. Zum Beispiel das Abgleichen einer Zeichenfolge aus einer Reihe variabler Argumente.
  • Die von der ausgelagerten Bibliothek bereitgestellten Funktionen. Beispielsweise bietet die StringUtils-Bibliothek verschiedene Methoden zum Vergleichen von Zeichenfolgen.