Im gezeigten Code gibt es keine weitere Variable, die eine Referenz auf den ursprünglichen Inhalt von a speichert, dieser wird irgendwann vom GC aufgeräumt werden.
ich meine mit a=b a referenziert was b referenziert , die zeigen jetzt auf einem Objekt ! bedeutet das a auch 2000 wird !? wenn ich eine Methode wie hebeab() aufrufe , dann wird a=1500 oder b=1500?
ich meine mit a=b a referenziert was b referenziert , die zeigen jetzt auf einem Objekt ! bedeutet das a auch 2000 wird !? wenn ich eine Methode wie hebeab() aufrufe , dann wird a=1500 oder b=1500?
Sowohl a als auch b referenzieren auf das selbe Objekt. Was du einem tust, tust du auch dem anderen. Es ist ja nur noch eines. Das ursprüngliche Konto, dessen Referenz in a gespeichert war, ist für dich nicht mehr zugreifbar.
Korrekterweise "wird a" nicht "2000". Was soll das auch bedeuten? Du kannst schlicht auf ein und dasselbe Konto (b) über zwei Variablen zugreifen. Egal, ob du von a oder von b abhebst, es geht immer von dem selben Konto weg.
Wenn Du ein Konto hast mit 2000 € und Du gibt mir eine Kontokarte zu dem Konto und dann hebe ich 500€ ab:
Dann sind die 500€ von Deinem Konto weg. Und das kannst Du sehen, indem Du deine Konto-Karte in den Automaten schiebst und den kontostand anzeigen lässt. Oder ich schiebe die Karte von Deinem Konto, die ich netter weise bekommen habe, in den Automaten ...
Also ganz ausführlich;
Es wird ein Konto erstellt und die Kontokarte wird in "a" aufgehoben.
Es wird ein weiteres Konto erstellt und die Kontokoarte wird in "b" aufgehoben.
Nun wird die Kontokarte aus "b" verdoppelt und die doppelte Karte kommt in "a" (Die Karte wird dabei an die Bank zurück geschickt. Die Bank merkt dann: Konto ohne Karte - und schließt das Konto. Das Konto, das also ursprünglich in a war, existiert dann ggf. nicht mehr (So nicht noch irgendwo eine Kontokarte dazu existieren sollte).
Das hier von Kontokarten gesprochen wird, dann meint das natürlich nur: Eine Referenz auf ein Konto. welches zentral verwaltet wird.
Also:
Es gibt Variablen und es gibt Objekte. Beides ist nicht dasselbe. Variablen können zu einem gegebenen Zeitpunkt in der Programmausführung eine Referenz (im Falle von Referenztypen) auf ein Objekt halten.
Nach der Zuweisung von a = b;referenziert die Variable adasselbe Objekt wie die Variable b.