GeeksforGeeks

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

  1. Der Hauptunterschied zwischen der Methode .equals() und dem Operator == besteht darin, dass das eine eine Methode und das andere ein Operator ist.
  2. Wir können den Operator == für den Referenzvergleich (Adressvergleich) und die Methode .equals() für den Inhaltsvergleich verwenden. In einfachen Worten: == prüft, ob beide Objekte auf dieselbe Speicherstelle zeigen, während .equals() den Vergleich der Werte in den Objekten auswertet.
  3. Wenn eine Klasse die equals-Methode nicht überschreibt, dann verwendet sie standardmäßig die equals(Object o)-Methode der nächsten Elternklasse, die diese Methode überschrieben hat. Siehe dies für Details
  4. Codierungsbeispiel:

    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:

    falsetrue

    Erläuterung: Hier legen wir zwei Objekte an, nämlich s1 und s2.

    • Bei s1 und s2 handelt es sich um unterschiedliche Objekte.
    • Wenn wir den Operator == für den Vergleich von s1 und s2 verwenden, dann ist das Ergebnis falsch, da beide unterschiedliche Adressen im Speicher haben.
    • Bei der Verwendung von equals ist das Ergebnis wahr, weil es nur die in s1 und s2 angegebenen Werte vergleicht.

Lassen Sie uns die beiden Operatoren im Detail verstehen:

Gleichheitsoperator (==)

Wir können Gleichheitsoperatoren für jeden primitiven Typ anwenden, einschließlich des booleschen Typs. wir können auch Gleichheitsoperatoren für Objekttypen anwenden.

class Test {
public static void main(String args)
{
System.out.println(10 == 20);
System.out.println('a' == 'b');
System.out.println('a' == 97.0);
System.out.println(true == true);
}
}



Ausgabe:

falsefalsetruetrue

Wenn wir == für Objekttypen anwenden, dann sollte es Kompatibilität zwischen den Argumenttypen geben (entweder Kind zu Elternteil oder Elternteil zu Kind oder gleicher Typ). Andernfalls erhalten wir einen Kompilierzeitfehler.

class Test {
public static void main(String args)
{
Thread t = new Thread();
Object o = new Object();
String s = new String("GEEKS");
System.out.println(t == o);
System.out.println(o == s);
System.out.println(t==s);
}
}



Ausgabe:

falsefalse// error: incomparable types: Thread and String

.equals()

In Java vergleicht die Methode string equals() die beiden gegebenen Strings auf der Grundlage der Daten/Inhalte der Strings. Wenn alle Inhalte beider Zeichenketten gleich sind, gibt sie true zurück. Wenn nicht alle Zeichen übereinstimmen, wird false zurückgegeben.

public class Test {
public static void main(String args)
{
Thread t1 = new Thread();
Thread t2 = new Thread();
Thread t3 = t1;
String s1 = new String("GEEKS");
String s2 = new String("GEEKS");
System.out.println(t1 == t3);
System.out.println(t1 == t2);
System.out.println(s1 == s2);
System.out.println(t1.equals(t2));
System.out.println(s1.equals(s2));
}
}



Ausgabe:

truefalsefalsefalsetrue

Erläuterung: Hier verwenden wir die Methode .equals, um zu prüfen, ob zwei Objekte die gleichen Daten enthalten oder nicht.

  • Im obigen Beispiel erstellen wir 3 Thread-Objekte und 2 String-Objekte.
  • Im ersten Vergleich prüfen wir, ob t1 == t3 ist oder nicht. Da wir wissen, dass sowohl t1 als auch t3 auf dasselbe Objekt verweisen, gibt er true zurück.
  • Im zweiten Vergleich verwenden wir den Operator „==“, um die String-Objekte zu vergleichen und nicht den Inhalt der Objekte. Hier sind beide Objekte unterschiedlich und daher ist das Ergebnis dieses Vergleichs „Falsch“
  • Wenn wir 2 String-Objekte mit dem Operator „==“ vergleichen, dann prüfen wir, ob beide Objekte die gleichen Daten enthalten oder nicht.
  • Beide Objekte enthalten die gleiche Zeichenkette, d.h. GEEKS, deshalb wird true zurückgegeben.

Dieser Artikel wurde von Bishal Kumar Dubey verfasst. Wenn Ihnen GeeksforGeeks gefällt und Sie einen Beitrag leisten möchten, können Sie auch einen Artikel unter contribute.geeksforgeeks.org verfassen oder Ihren Artikel an [email protected] schicken. Sehen Sie Ihren Artikel auf der GeeksforGeeks-Hauptseite erscheinen und helfen Sie anderen Geeks.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.