# Merkwürdiger Programmausschnitt



## John (17. Dez 2003)

```
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?


----------



## bummerland (17. Dez 2003)

warum nicht? das ist ein array aus "X"-Objekten.


----------



## John (17. Dez 2003)

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.


----------



## John (17. Dez 2003)

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


----------

