von DPunch » So, 12.01.2014 19:36
Servus
Bergkaffee hat geschrieben:Gerade deswegen verstehe ich nicht warum das Array aus dem der Wert für Zeile() geändert wird, wenn Zeile() geändert wird.
Da es sich bei "Punkte(i)" um ein Array handelt, enthält die Variable selber, also "Punkte(i)", nur eine sogenannte Referenz auf die Speicheradresse, an der dieses Array hinterlegt ist, nicht wie z.B. einen einfachen Integer den tatsächlichen Wert.
Ein Zugriff wie "Punkte(i)(0)" wird aufgelöst, indem zuerst das Array im Speicher über die Referenz in "Punkte(i)" ausfindig gemacht wird und dort dann der Inhalt des ersten Elements ausgelesen wird. Bei einer Zuweisung wie "Punkte(i)(0) = 5" wird ebenfalls erst das Array ausfindig gemacht und dann im Speicherbereich, der für das erste Element reserviert ist, das Bitmuster für die Zahl 5 geschrieben.
Die Zuweisung
bedeutet, dass die in "Punkte(i)" gespeicherte Referenz auf das ursprüngliche Array zusätzlich in "Zeile" gepeichert wird.
Beide Variablen zeigen also auf die gleiche Speicheradresse.
Ein
wird nun wie oben erklärt über die gespeicherte Referenz das Array im Speicher ausfindig machen und genau an der gleichen Stelle, an der auch bei einem Aufruf von "Punkte(i)(0)" nach dem Wert gesucht wird, die 5 schreiben.
Für mehr Informationen kannst Du bei Bedarf mal nach Stichworten wie "Referenz Java" o.Ä. googlen.
Servus
[quote="Bergkaffee"]Gerade deswegen verstehe ich nicht warum das Array aus dem der Wert für Zeile() geändert wird, wenn Zeile() geändert wird.[/quote]
Da es sich bei "Punkte(i)" um ein Array handelt, enthält die Variable selber, also "Punkte(i)", nur eine sogenannte Referenz auf die Speicheradresse, an der dieses Array hinterlegt ist, nicht wie z.B. einen einfachen Integer den tatsächlichen Wert.
Ein Zugriff wie "Punkte(i)(0)" wird aufgelöst, indem zuerst das Array im Speicher über die Referenz in "Punkte(i)" ausfindig gemacht wird und dort dann der Inhalt des ersten Elements ausgelesen wird. Bei einer Zuweisung wie "Punkte(i)(0) = 5" wird ebenfalls erst das Array ausfindig gemacht und dann im Speicherbereich, der für das erste Element reserviert ist, das Bitmuster für die Zahl 5 geschrieben.
Die Zuweisung
[code]Zeile = Punkte(i)[/code]
bedeutet, dass die in "Punkte(i)" gespeicherte Referenz auf das ursprüngliche Array zusätzlich in "Zeile" gepeichert wird.
Beide Variablen zeigen also auf die gleiche Speicheradresse.
Ein
[code]Zeile(0) = 5[/code]
wird nun wie oben erklärt über die gespeicherte Referenz das Array im Speicher ausfindig machen und genau an der gleichen Stelle, an der auch bei einem Aufruf von "Punkte(i)(0)" nach dem Wert gesucht wird, die 5 schreiben.
Für mehr Informationen kannst Du bei Bedarf mal nach Stichworten wie "Referenz Java" o.Ä. googlen.