Frage von Paranormal43, 45

Referenzgröße in Java?

Hallo, ich habe in einem Buch (Java von Kopf bis Fuß) gelesen, dass alle Referenzen (nicht die Referenzvariablen) die gleiche Größe haben. Aber jede JVM kann ander Mittel verwenden, um Referenzen zu repräsentieren. Die Referenzen der einen JVM können also größer oder kleiner als die Referenzen der einen JVM sein. Ich wollte nur fragen ob die jetzt die Referenzvariablen meinen oder Referenzen ? Ich wollte halt nur sichergehen.

Antwort
von androhecker, 27

Eine Referenz variable speichert eine Referenz, also hat diese die größe der Referenz die sie speichert. Kannst dir das ungefähr so vorstellen, dass in Java jedes Objekt seinen eigenen Name hat, also zB 81838919, der Name ist für jedes Objekt unterschiedlich aber immer gleich lang. Wenn du jetzt eine Objekt Variable für zB eine Liste erstellst, wird darin nur der Name der Liste gespeichert, also 81838919. Damit haben die Variable und die Referenz die gleiche Größe, weil die Variable einfach nur die Referenz beinhaltet.

Antwort
von 3v1lH4x0R, 11

Referenzvariable speichert eine Referenz auf ein Objekt.
Eine Referenz ist nun einfach die Addresse an der das Objekt im Speicher abgelegt ist. Da Objekte verschiedene Größen haben können zeigt die Referenz (mit einem Pointer in C/C++ Vergleichbar) auf den Anfang eben dieses.
Da der RAM über einen Addressbus adressiert wird, und dieser eine bestimmte Adressgröße hat (auf modernen Computern meist 32 oder 64 bit), hat eine Referenz auch immer diese Größe (in den Fall 32 oder 64 bit).

Falls noch Fragen bestehen: frag.

Antwort
von triopasi, 30

Referenzen werden im wesentlichen durch Pointer realisiert, kA ob's da andere Wege gibt. Pointer haben die selbe Größe, d.h. ob der String 10 oder 10.000 Zeichen lang ist, der Pointer darauf (und somit die Referenz) ist gleich groß. Mit der Referenzvariablen ist dann wieder der Strings gemeint (da Referenzdatentyp), dieser kann natürlich unterschiedlich groß sein. 


Hoffe das ist nicht totaler Schwachsinn und hift dir etwas xD


Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten