tja, viel mehr kann man da nicht sagen außer dass es einen grundlegenden Unterschied zwischen Werten primitiver Datentypen und Objekten gibt
dass int a und int b auf verschiedene Speicherstellen zeigen ist doch immer so, gar nicht möglich dass sie auf die gleiche zeigen,
also was soll == dann tun? es bleibt als einzige sinnvolle Anwendung zu prüfen, ob die Werte darin gleich sind,
und 5 ist nun mal 5, es gibt keine zwei verschiedenen 5 auf der Welt! (in Java zumindest)
----------
anders siehst bei Objekten aus,
new Integer(5)
new Integer(5)
sind zwei völlig verschiedene Objekte die in diesem Fall zufällig den gleichen Inhalt haben,
Objekte sind sowas wie Behälter mit weit mehr Funktionalität als einfache Werte, da gibts ganze Bücher zu den Unterschieden und Anwendungen,
was festzuhalten bleibt:
bei Objektreferenzen (die auch wieder IMMER auf zwei verschiedene Speicherstellen verweisen) gibt es drei interessante Fälle:
zeigen die Referenzen auf dasselbe OBjekt im Heap oder auf zwei verschiedene ÄHNLICHE Objekte (soweit man das vergleichen kann) oder auf zwei verschiedene Objeke verschiedenen Inhalts
nur mit einem true/ false-Vergleich kommt man nicht aus,
mit == und equals hat man da alle Möglichkeiten,
die Aufteilung ist: == prüft auf Objektgleichheit, equals auf Ähnlichkeit
String a = new String("x");
String b = new String("x");
sind zwei verschiedene String-Objekte die beide "x" enthalten
(== false, equals true)