781 Stimmen

Was ist der Unterschied zwischen == und equals() in Java?

Ich wollte klären, ob ich das richtig verstanden habe:

  • == ist ein Referenzvergleich, d.h. beide Objekte zeigen auf denselben Speicherplatz
  • .equals() wertet den Vergleich der Werte in den Objekten

0voto

Die Methode equals() vergleicht hauptsächlich den ursprünglichen Inhalt des Objekts.

Wenn wir schreiben

    String s1 = "Samim";
    String s2 = "Samim";
    String s3 = new String("Samim");
    String s4 = new String("Samim");

    System.out.println(s1.equals(s2));
    System.out.println(s2.equals(s3));
    System.out.println(s3.equals(s4));

Die Ausgabe wird sein

true 
true 
true

Denn die Methode equals() vergleicht den Inhalt des Objekts. in der ersten System.out.println() ist der Inhalt von s1 und s2 gleich, deshalb wird true gedruckt. Und bei den anderen beiden ist System.out.println() wahr.

Nochmals,

    String s1 = "Samim";
    String s2 = "Samim";
    String s3 = new String("Samim");
    String s4 = new String("Samim");

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

Die Ausgabe wird sein

true
false 
false

Denn der == Operator vergleicht hauptsächlich die Referenzen des Objekts und nicht den Wert. Im ersten System.out.println() sind die Referenzen von s1 und s2 gleich, weshalb es true zurückgibt.

In der zweiten System.out.println() wird das Objekt s3 erstellt, deshalb wird eine weitere Referenz von s3 erstellt, und die Referenzen von s2 und s3 unterscheiden sich, aus diesem Grund wird "false" zurückgegeben.

Die dritte System.out.println() folgt den Regeln der zweiten System.out.println(), weshalb sie "false" zurückgibt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X