Merkwürdiger Programmausschnitt

Status
Nicht offen für weitere Antworten.
J

John

Gast
Code:
class X
{
   int y;
   X() {};

}

....
X[] x = new X[2];
....
x[0] = new X();
x[1] = new X();

Das kann doch nicht funktionieren, oder etwa doch?
 
J

John

Gast
Mein eigentliches Problem ist, wie das im Speicher aussieht.
X[] x= new X[2];

Soweit ich das verstanden hab, wird auf dem Heap ein Array von 2 Objekten der Klasse X angelegt, der Konstruktor ausgeführt, und dem x auf dem Stack eine Referenz auf das erste Objekt im Heap gegeben.

x[0] = new X();

hier wird auf dem Heap ein weiteres Objekt der Klasse X erstellt und x[0] erhält die Referenz auf dieses neue Objekt. Geht das überhaupt? Müsste nicht viel eher x = new X(); dort stehen, denn das x[] und das x[1] haben an sich doch keinen eigenen Speicherbereich.
 
J

John

Gast
Ich glaub ich habs jetzt. Das
X[] x = new X[2];
sichert den Speicher für 2 Objekte der Klasse X im Heap und legt darüber hinaus ein Array von Referenzen auf die Objekte an. x ist nun die Referenz auf das Array der Referenzen auf die Objekte.


Danke für deine Bemühungen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Programmausschnitt Modula 2 Softwareentwicklung 8

Ähnliche Java Themen

Neue Themen


Oben