2017-07-04 5 views
0

Ich bin ein Anfänger und ich habe eine Frage zum Erstellen von Objekten.Erstellen mehrerer Objekte mit einer Schleife

Ich verstehe nicht, wie es möglich ist, zwei Objekte mit demselben Variablennamen „oneCar“ in dieser Situation zu schaffen:

for (int i = 0; i<2 ; ++i) 
    { 
     Car oneCar = new Car(); 
    } 

Es wird zwei Objekte erstellen „oneCar“ mit zwei verschiedenen Referenzen.

Aber wenn ich dies tun:

Car oneCar = new Car(); 
Car oneCar = new Car(); 

Diese mir sagen wird, dass es eine doppelte Variable ist.

+0

Weitere Informationen zum variablen Bereich. – SLaks

Antwort

4

Mit ein paar Ausnahmen sind lokale Variablen in Java auf die nächste Umgebung von geschweiften Klammern beschränkt. Das heißt, was den Compiler betrifft, ist die Variable nicht mehr vorhanden, sobald Sie die geschweiften Klammern verlassen. Die Variable oneCar, die bei der ersten Iteration deklariert wurde, existiert nicht bis zum Erreichen der zweiten Iteration. Es entspricht dem Schreiben:

{ 
    Car oneCar = new Car(); 
} 
{ 
    Car oneCar = new Car(); 
} 

was völlig legal ist.

+1

Ich hatte genau den gleichen Beispielcode im Kopf :) –

+0

Vielen Dank für die Antwort. Kann ich nach der Schleife, wenn ich eine Methode auf einem bestimmten oneCar aufrufen möchte, es tun? Oder sollte ich zum Beispiel unbedingt eine ArrayList verwenden, um ihre Referenzen zu speichern? – Rodric

+1

Wenn Sie mehrere Autos erstellen möchten, möchten Sie wahrscheinlich einen Verweis auf sie, also würden Sie sie normalerweise in eine Liste setzen, ja. – khelwood

1

Ja, weil Sie 2 mal die gleiche Variable mit dem gleichen Namen deklarieren. Ich denke, dass Sie Ihr Problem lösen können, indem Sie ein Array von Carand erstellen und dann den Konstruktor für jedes Array-Feld in einer for-Anweisung verwenden.

Car cars[10]; 
for(int i=0;i<9;i++){ 
    cars[i]= new Car(); 
} 
Verwandte Themen