Wie kann man 2 Strings vergleichen?

In diesem Beitrag werden verschiedene Möglichkeiten zum Vergleichen zweier Strings in Java untersucht equals() und compareTo() Methoden von String Klasse, equals() Methode der Objects Klasse, und StringUtils Klasse der Apache Commons-Bibliothek.

1. Vermeiden Sie Gleichheitsoperatoren (==) Methode

Jeder Java-Programmierer sollte diesen Equal-to-Operator kennen == sollte nicht für Stringsgleichheit verwendet werden, da es auf Referenzgleichheit prüft, dh ob zwei Strings auf dasselbe Objekt zeigen oder nicht. Dieses Verhalten wird im Folgenden demonstriert:

classMain

{

    publicstaticvoid main(String[]args)

    {

        Strings1=newString("Equal-to operator in Java");

        Strings2=new String("Equal-to operator in Java");

        System.out.println(s1==s2);       // Wird als falsch ausgewertet

        System.out.println(null==s2);     // Wird als falsch ausgewertet

        System.out.println(s1 ==null);     // Wird als falsch ausgewertet

        System.out.println(null==null);   // Wird als wahr ausgewertet

    }

}

Herunterladen  Code ausführen

 
Seit der == überprüft, ob die Verweise auf die Objekte gleich sind oder nicht, kann er für zwei String-Literale mit gleichem Wert true zurückgeben, da sie dasselbe Objekt im JVM-String-Pool teilen, wie unten gezeigt. Es wird empfohlen, sich nicht auf ein solches Verhalten zu verlassen und Standardmethoden für die Zeichenfolgengleichheit zu verwenden.

classMain

{

    publicstaticvoid main(String[]args)

    {

        Strings1=newString("Equal-to operator in Java");

        Strings2=new String("Equal-to operator in Java");

        // Wird als wahr ausgewertet, da beide Objekte auf dieselbe Referenz zeigen

        // im String-Pool

        System.out.println(s1== s2);

    }

}

Herunterladen  Code ausführen

2. Verwenden String.equals() Methode

Java String Klasse hat die equals() Methode, die den tatsächlichen Inhalt einer Zeichenfolge mit einer anderen Zeichenfolge vergleicht und einen booleschen Wert zurückgibt, der bestimmt, ob sie gleich sind oder nicht. Das String Klasse bietet außerdem:

  1. equalsIgnoreCase(String) Methode, die der ähnlich ist equals() -Methode, außer dass die Groß-/Kleinschreibung von Zeichen im String ignoriert wird.
  2. contentEquals(CharSequence) -Methode, die die Zeichenfolge mit der angegebenen CharSequence vergleicht.
  3. contentEquals(StringBuffer) -Methode, die die Zeichenfolge mit dem angegebenen stringBuffer vergleicht.

 
Hier ist ein einfaches Java-Programm, das die Funktionsweise von demonstriert equals() Methode. Beachten Sie, dass wir nicht anrufen sollten equals() auf eine leere Zeichenfolge, da dies zu a führt NullPointerException.

classMain

{

    publicstaticvoid main(String[]args)

    {

        Strings1=newString("Compare two strings in Java");

        Strings2=new String("Compare two strings in Java");

        System.out.println(s1!=null&&s1.equals(s2));    // Wird als wahr ausgewertet

    }

}

Herunterladen  Code ausführen

3. Verwenden Objects.equals() Methode

Java 7 führte die ein Object -Klasse, die aus mehreren statischen Hilfsmethoden zum Bearbeiten eines Objekts besteht. Es hat die equals() -Methode, die einen booleschen Wert zurückgibt, der bestimmt, ob die Argumente gleich sind oder nicht.

im Gegensatz zu den equals() Methode der String Klasse, es verarbeitet Nullen elegant und wirft kein a NullPointerException, wie unten gezeigt:

importjava.util.Objects;

classMain

{

    publicstaticvoid main(String[]args)

    {

        Strings1=newString("Compare two strings in Java");

        Strings2=new String("Compare two strings in Java");

        System.out.println(Objects.equals(s1, s2));     // Wird als wahr ausgewertet

        System.out.println(Objects.equals(null, null));// Wird als wahr ausgewertet

        System.out.println(Objects.equals(null, s2));    // Wird als falsch ausgewertet

        System.out.println(Objects.equals(s1, null));    // Wird als falsch ausgewertet

    }

}

Herunterladen  Code ausführen

4. Verwenden String.compareTo() Methode

String Klasse bietet auch die compareTo() Methode, die zwei Strings lexikografisch vergleicht, dh Zeichen für Zeichen basierend auf der Wörterbuchreihenfolge. Es gibt 0 zurück, wenn die Zeichenfolge gleich dem Argument ist. Andernfalls wird die Differenz zwischen den beiden Zeichenwerten zurückgegeben, die am ersten nicht übereinstimmenden Index vorhanden sind.

Das String Klasse bietet auch die compareToIgnoreCase() Methode, die ähnlich ist compareTo() -Methode, ignoriert jedoch die Groß-/Kleinschreibung beider Strings. Wie equals() Methode der String Klasse, das sollte man nicht nennen compareTo() -Methode auf eine leere Zeichenfolge, da dies zu a führt NullPointerException.

 
Hier ist ein kurzes Java-Programm, um die Funktionsweise von zu demonstrieren compareTo() Methode:

classMain

{

    publicstaticvoid main(String[]args)

    {

        Strings1=newString("Compare two strings in Java");

        Strings2=new String("Compare two strings in Java");

        // Wird als wahr ausgewertet

        System.out.println(s1!=null&&s1.compareTo(s2)==0);

    }

}

Herunterladen  Code ausführen

5. Verwenden von Apache Commons Lang

Die Apache Commons StringUtils Die Klasse stellt mehrere statische Hilfsmethoden für den Zeichenfolgenvergleich bereit. Das equals() und compare() Methode von StringUtils Klasse ist eine erweiterte Version der equals() und compareTo() Methode von String -Klasse, die auch Nullwerte behandelt.

StringUtils Klasse hat auch equalsIgnoreCase() und compareIgnoreCase() Methode, die der ähnlich sind equals() und compare() -Methode, außer dass sie die Groß-/Kleinschreibung beider Strings ignorieren.

importorg.apache.commons.lang3.StringUtils;

classMain

{

    publicstaticvoidmain(String[]args)

    {

        Strings1=newString("Compare two strings in Java");

        Strings2=new String("Compare two strings in Java");

        // Wird als wahr ausgewertet

        System.out.println(StringUtils.equals(s1, s2));

        // Wird als wahr ausgewertet

        System.out.println(StringUtils.compare(s1, s2)==0);

    }

}

Code herunterladen

Das ist alles über den Vergleich zweier Strings in Java.


Danke fürs Lesen.

Bitte nutzen Sie unsere Online-Compiler um Code in Kommentaren mit C, C++, Java, Python, JavaScript, C#, PHP und vielen weiteren gängigen Programmiersprachen zu posten.

Wie wir? Empfehlen Sie uns Ihren Freunden und helfen Sie uns zu wachsen. Viel Spaß beim Codieren 🙂


Welche Funktion überprüft zwei Strings bekannter Länge auf Gleichheit?

Mit strcmp (String Compare) können wir zwei Strings vergleichen. Der Rückgabewert kann hierbei folgende Werte haben: 0 die Strings sind gleich.

Was macht Strcmp?

Mit strcmp(str, string) kannst du zwei Strings vergleichen. Wenn die beiden gleich sind, erhältst du null als Rückgabewert. Sonst gibt diese Funktion einen Wert kleiner oder größer null zurück.

Wie funktioniert Strcmp in C?

strcmp. int strcmp(char* s1, char* s2); Diese Funktion vergleicht zwei Zeichenketten miteinander, wobei Zeichen für Zeichen deren jeweilige ASCII-Codes verglichen werden. Wenn die beiden Strings identisch sind, gibt die Funktion den Wert 0 zurück.

Toplist

Neuester Beitrag

Stichworte