Wie funktionieren Arrays im ByteCode von Java? [Duplizieren]

Diese Frage hat hier bereits eine Antwort:

Wo ist die Längeneigenschaft des Arrays definiert? 7 AntwortenWie funktioniert die Array-Klasse in Java? 4 Antworten

Wenn ich eine normale Klasse wie List, Vector oder etwas anderes benutze, bekomme ich einesize() Funktion, die die Länge der betrachteten Klasse zurückgibt, aber wenn ich ein Array einer Klasse oder einen Standarddatentyp verwende, erhalte ich eine öffentliche Elementlänge, die die aktuelle Länge des Arrays zurückgibt.

int a[] = new int[3];
a.length; // used without ()

Vector<Integer> v = new Vector<Integer>();
v.length(); // used with ()

Warum das? Ich meine, ein Array ist keine eigene Klasse, nicht wahr? Wenn es also keine Klasse ist, kann es kein varaible-Mitglied geben. Ich kann mir nicht vorstellen, wie das im Hintergrund gehandhabt wird (ByteCode). Ich weiß, dass ein Array im Speicher mit einem Zeiger auf das erste Element des Arrays gespeichert ist und mit dem Index (i) der Speicherzeiger verschoben wirdArrayPointer + i*(size of DataType).

Jetzt können Sie sagen, dass der Computer alle Elemente eines Arrays durchläuft und alle Elemente zählt. Aber wie kann ein Computer wissen, wo ein Array endet und wo das nächste beginnt? Und woher kommt die 'Mitgliedsvariable' aus dem Array, in dem die Größe gespeichert ist?

Ich meine, wir verwenden Arrays so oft, aber ich weiß so wenig, was hinter dem Java-Code im ByteCode passiert. Können Sie mir erklären, wie das möglich ist?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage