String ist eine Folge von Zeichen. In Java sind Objekte von String unveränderlich, was bedeutet, dass sie konstant sind und nach ihrer Erstellung nicht mehr geändert werden können.

Im Folgenden finden Sie 5 Möglichkeiten, zwei Strings in Java zu vergleichen:

  1. Benutzerdefinierte Funktion verwenden: Definieren Sie eine Funktion, um Werte mit den folgenden Bedingungen zu vergleichen:
    1. if (string1 > string2) gibt einen positiven Wert zurück zurück .
    2. Wenn beide Zeichenfolgen lexikografisch gleich sind,
      dh (Zeichenfolge1 == Zeichenfolge2), wird 0 zurückgegeben zurückgegeben .
    3. if (string1 < string2) gibt einen negativen Wert zurück zurück .

    Der Wert wird berechnet als (int)str1.charAt(i) – (int)str2.charAt(i)

    Beispiele:

    Eingabe 1: GeeksforGeeks
     Eingabe 2: Übung
     Ausgabe: -9
    
    Eingabe 1: Geeks
     Eingabe 2: Geeks
     Ausgabe: 0
    
    Eingabe 1: GeeksforGeeks
     Eingabe 2: Geeks
     Ausgabe: 8
    

    Programm:






    // Java program to Compare two strings
    // lexicographically
    public class GFG {
      
        // This method compares two strings
        // lexicographically without using
        // library functions
        public static int stringCompare(String str1, String str2)
        {
      
            int l1 = str1.length();
            int l2 = str2.length();
            int lmin = Math.min(l1, l2);
      
            for (int i = 0; i < lmin; i++) {
                int str1_ch = (int)str1.charAt(i);
                int str2_ch = (int)str2.charAt(i);
      
                if (str1_ch != str2_ch) {
                    return str1_ch - str2_ch;
                }
            }
      
            // Edge case for strings like
            // String 1="Geeks" and String 2="Geeksforgeeks"
            if (l1 != l2) {
                return l1 - l2;
            }
      
            // If none of the above conditions is true,
            // it implies both the strings are equal
            else {
                return 0;
            }
        }
      
        // Driver function to test the above program
        public static void main(String args[])
        {
            String string1 = new String("Geeksforgeeks");
            String string2 = new String("Practice");
            String string3 = new String("Geeks");
            String string4 = new String("Geeks");
      
            // Comparing for String 1 < String 2
            System.out.println("Comparing " + string1 + " and " + string2
                               + " : " + stringCompare(string1, string2));
      
            // Comparing for String 3 = String 4
            System.out.println("Comparing " + string3 + " and " + string4
                               + " : " + stringCompare(string3, string4));
      
            // Comparing for String 1 > String 4
            System.out.println("Comparing " + string1 + " and " + string4
                               + " : " + stringCompare(string1, string4));
        }
    }
    Ausgabe:
    Vergleich von Geeksforgeeks und Praxis: -9
    Vergleich von Geeks und Geeks: 0
    Vergleich von Geeksforgeeks und Geeks: 8
    
  2. Verwendung von String.equals() : In Java vergleicht die Methode string equals() die beiden gegebenen Strings basierend auf den Daten/dem Inhalt des Strings. Wenn alle Inhalte beider Strings gleich sind, wird true zurückgegeben. Wenn ein Zeichen nicht übereinstimmt, wird false zurückgegeben.

    Syntax:

    str1.equals(str2);

    Hier sind str1 und str2 beide die Strings, die verglichen werden sollen.

    Beispiele:

    Eingabe 1: GeeksforGeeks
     Eingabe 2: Übung
     Ausgabe: falsch
    
    Eingabe 1: Geeks
     Eingabe 2: Geeks
     Ausgabe: wahr
    
    Eingabe 1: Computerfreaks
     Eingabe 2: Computerfreaks
     Ausgabe: false
    

    Programm:




    // Java program to Compare two strings
    // lexicographically
    public class GFG {
        public static void main(String args[])
        {
            String string1 = new String("Geeksforgeeks");
            String string2 = new String("Practice");
            String string3 = new String("Geeks");
            String string4 = new String("Geeks");
            String string5 = new String("geeks");
      
            // Comparing for String 1 != String 2
            System.out.println("Comparing " + string1 + " and " + string2
                               + " : " + string1.equals(string2));
      
            // Comparing for String 3 = String 4
            System.out.println("Comparing " + string3 + " and " + string4
                               + " : " + string3.equals(string4));
      
            // Comparing for String 4 != String 5
            System.out.println("Comparing " + string4 + " and " + string5
                               + " : " + string4.equals(string5));
      
            // Comparing for String 1 != String 4
            System.out.println("Comparing " + string1 + " and " + string4
                               + " : " + string1.equals(string4));
        }
    }
    Ausgabe:
    Vergleich von Geeksforgeeks und Practice: falsch
    Geeks und Geeks vergleichen: wahr
    Vergleich von Geeks und Geeks: falsch
    Vergleich von Geeksforgeeks und Geeks: falsch
    
  3. Verwenden von String.equalsIgnoreCase() : Die Methode String.equalsIgnoreCase() vergleicht zwei Strings unabhängig von der Groß-/Kleinschreibung (Klein- oder Großschreibung) des Strings. Diese Methode gibt true zurück, wenn das Argument nicht null ist und der Inhalt beider Strings gleich ist, wobei Groß- und Kleinschreibung ignoriert wird, andernfalls false.

    Syntax:

    str2.equalsIgnoreCase(str1);

    Hier sind str1 und str2 beide die Strings, die verglichen werden sollen.



    Beispiele:

    Eingabe 1: GeeksforGeeks
     Eingabe 2: Übung
     Ausgabe: falsch
    
    Eingabe 1: Geeks
     Eingabe 2: Geeks
     Ausgabe: wahr
    
    Eingabe 1: Computerfreaks
     Eingabe 2: Computerfreaks
     Ausgabe: wahr
    

    Programm:




    // Java program to Compare two strings
    // lexicographically
    public class GFG {
        public static void main(String args[])
        {
            String string1 = new String("Geeksforgeeks");
            String string2 = new String("Practice");
            String string3 = new String("Geeks");
            String string4 = new String("Geeks");
            String string5 = new String("geeks");
      
            // Comparing for String 1 != String 2
            System.out.println("Comparing " + string1 + " and " + string2
                               + " : " + string1.equalsIgnoreCase(string2));
      
            // Comparing for String 3 = String 4
            System.out.println("Comparing " + string3 + " and " + string4
                               + " : " + string3.equalsIgnoreCase(string4));
      
            // Comparing for String 4 = String 5
            System.out.println("Comparing " + string4 + " and " + string5
                               + " : " + string4.equalsIgnoreCase(string5));
      
            // Comparing for String 1 != String 4
            System.out.println("Comparing " + string1 + " and " + string4
                               + " : " + string1.equalsIgnoreCase(string4));
        }
    }
    Ausgabe:
    Vergleich von Geeksforgeeks und Practice: falsch
    Geeks und Geeks vergleichen: wahr
    Geeks und Geeks vergleichen: wahr
    Vergleich von Geeksforgeeks und Geeks: falsch
    
  4. Verwenden von Objects.equals() : Die Methode Object.equals(Object a, Object b) gibt true zurück, wenn die Argumente gleich sind, andernfalls false. Wenn also beide Argumente null sind, wird true zurückgegeben, und wenn genau ein Argument null ist, wird false zurückgegeben. Andernfalls wird die Gleichheit mithilfe der Methode equals() des ersten Arguments bestimmt.

    Syntax:

    public static boolean equals (Objekt a, Objekt b)

    Hier sind a und b beide die zu vergleichenden String-Objekte.

    Beispiele:

    Eingabe 1: GeeksforGeeks
     Eingabe 2: Übung
     Ausgabe: falsch
    
    Eingabe 1: Geeks
     Eingabe 2: Geeks
     Ausgabe: wahr
    
    Eingang 1: null
     Eingang 2: null
     Ausgang: wahr
    

    Programm:




    // Java program to Compare two strings
    // lexicographically
      
    import java.util.*;
      
    public class GFG {
        public static void main(String args[])
        {
            String string1 = new String("Geeksforgeeks");
            String string2 = new String("Geeks");
            String string3 = new String("Geeks");
            String string4 = null;
            String string5 = null;
      
            // Comparing for String 1 != String 2
            System.out.println("Comparing " + string1 + " and " + string2
                               + " : " + Objects.equals(string1, string2));
      
            // Comparing for String 2 = String 3
            System.out.println("Comparing " + string2 + " and " + string3
                               + " : " + Objects.equals(string2, string3));
      
            // Comparing for String 1 != String 4
            System.out.println("Comparing " + string1 + " and " + string4
                               + " : " + Objects.equals(string1, string4));
      
            // Comparing for String 4 = String 5
            System.out.println("Comparing " + string4 + " and " + string5
                               + " : " + Objects.equals(string4, string5));
        }
    }
    Ausgabe:
    Vergleich von Geeksforgeeks und Geeks: falsch
    Geeks und Geeks vergleichen: wahr
    Vergleich von Geeksforgeeks und null : false
    Vergleich von null und null : wahr
    
  5. Verwenden von String.compareTo() :

    Syntax:

    int str1.compareTo(String str2)

    Funktioniert :
    Es vergleicht und gibt die folgenden Werte wie folgt zurück:



    1. if (string1 > string2) gibt einen positiven Wert zurück .
    2. Wenn beide Zeichenfolgen lexikografisch gleich sind,
      dh (Zeichenfolge1 == Zeichenfolge2), wird 0 zurückgegeben .
    3. if (string1 < string2) gibt einen negativen Wert zurück .

    Beispiele:

    Eingabe 1: GeeksforGeeks
     Eingabe 2: Übung
     Ausgabe: -9
    
    Eingabe 1: Geeks
     Eingabe 2: Geeks
     Ausgabe: 0
    
    Eingabe 1: GeeksforGeeks
     Eingabe 2: Geeks
     Ausgabe: 8
    

    Programm:




    // Java program to Compare two strings
    // lexicographically
      
    import java.util.*;
      
    public class GFG {
        public static void main(String args[])
        {
            String string1 = new String("Geeksforgeeks");
            String string2 = new String("Practice");
            String string3 = new String("Geeks");
            String string4 = new String("Geeks");
      
            // Comparing for String 1 < String 2
            System.out.println("Comparing " + string1 + " and " + string2
                               + " : " + string1.compareTo(string2));
      
            // Comparing for String 3 = String 4
            System.out.println("Comparing " + string3 + " and " + string4
                               + " : " + string3.compareTo(string4));
      
            // Comparing for String 1 > String 4
            System.out.println("Comparing " + string1 + " and " + string4
                               + " : " + string1.compareTo(string4));
        }
    }
    Ausgabe:
    Vergleich von Geeksforgeeks und Praxis: -9
    Vergleich von Geeks und Geeks: 0
    Vergleich von Geeksforgeeks und Geeks: 8
    

Warum nicht == für den Vergleich von Strings verwenden?

Im Allgemeinen werden die Operatoren equal() und „ == “ in Java verwendet, um Objekte zu vergleichen, um die Gleichheit zu überprüfen, aber hier sind einige der Unterschiede zwischen den beiden:

  • Der Hauptunterschied zwischen der Methode .equals() und dem Operator == besteht darin, dass die eine Methode und die andere der Operator ist.
  • Man kann ==-Operatoren für den Referenzvergleich (Adressvergleich) und die .equals()-Methode für den Inhaltsvergleich verwenden .

    In einfachen Worten, == prüft, ob beide Objekte auf denselben Speicherort zeigen, während .equals() den Vergleich von Werten in den Objekten auswertet.

    Beispiel:




    // Java program to understand
    // why to avoid == operator
      
    public class Test {
        public static void main(String[] args)
        {
            String s1 = new String("HELLO");
            String s2 = new String("HELLO");
      
            System.out.println(s1 == s2);
      
            System.out.println(s1.equals(s2));
        }
    }
    Ausgabe:
    falsch
    wahr
    

    Erläuterung: Hier werden zwei String-Objekte erstellt, nämlich s1 und s2.

    • Sowohl s1 als auch s2 beziehen sich auf unterschiedliche Objekte.
    • Wenn man den Operator == für den Vergleich von s1 und s2 verwendet, ist das Ergebnis falsch, da beide unterschiedliche Adressen im Speicher haben.
    • Bei Verwendung von equals ist das Ergebnis wahr, da es nur die in s1 und s2 angegebenen Werte vergleicht.

    Achtung Leser! Hören Sie jetzt nicht auf zu lernen. Holen Sie sich mit dem Kurs Fundamentals of Java and Java Collections zu einem studentenfreundlichen Preis alle wichtigen Java Foundation- und Collections-Konzepte und machen Sie sich bereit für die Industrie. Um Ihre Vorbereitung vom Erlernen einer Sprache auf DS Algo und vieles mehr abzuschließen, lesen Sie bitte Vollständiger Vorbereitungskurs für ein Vorstellungsgespräch .