In der Programmiersprache Java gibt es signifikante Unterschiede zwischen '==' und 'equals()'. Diese zwei Operatoren werden oft in einer Intention verwendet, die Gleichheit zwischen zwei Objekten zu prüfen. Aber sie agieren tatsächlich auf grundverschiedene Weisen.
Die Verwendung von '==' in Java prüft die Referenzgleichheit. Das bedeutet, dass geprüft wird, ob zwei Referenzen auf das gleiche Objekt im Speicher zeigen.
Ein einfaches Beispiel dafür wäre:
String s1 = new String("Hello");
String s2 = new String("Hello");
System.out.println(s1 == s2); //Die Ausgabe ist 'false'
Auch wenn die Werte von s1 und s2 gleich sind, sind sie nicht dasselbe Objekt. Sie befinden sich in verschiedenen Speicherbereichen, und deshalb ist das Ergebnis 'false'.
Im Gegensatz dazu überprüft 'equals()' die Wertgleichheit. D.h., es wird geprüft, ob sich die Werte der zwei Objekte ähneln. Wenn Sie die gleiche logische Bedeutung haben, werden sie als gleich betrachtet.
String s1 = new String("Hello");
String s2 = new String("Hello");
System.out.println(s1.equals(s2)); //Die Ausgabe ist 'true'
Im obigen Beispiel haben die Objekte 's1' und 's2' den gleichen Wert, auch wenn sie auf verschiedene Speicherbereiche verweisen. Daher gibt 'equals()' 'true' zurück.
In der Praxis fällt es leicht, diese beiden Operatoren zu verwechseln, deshalb sollte vorsichtig gehandelt werden. Wenn Sie auf Wertgleichheit prüfen wollen, sollten Sie 'equals()' verwenden.