2017-07-04 29 views
0

私は初心者です。オブジェクトの構築について質問があります。ループを使用して複数のオブジェクトを作成する

私はこのような状況で同じ変数名「oneCar」との2つのオブジェクトを作成することが可能であるかを理解していない:

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

これは、2つの異なる参照を持つ2つのオブジェクト「oneCar」を作成します。

しかし、私はこれを行う場合:

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

これは、重複変数があることを私に教えてくれます。

+0

可変範囲について学びます。 – SLaks

答えて

4

いくつかの例外を除いて、Javaのローカル変数は、最も近い中括弧のセットにスコープされます。つまり、コンパイラに関する限り、中括弧を終了すると変数は存在しなくなります。最初の反復で宣言された変数oneCarは、2回目の反復までには存在しません。これは完全に合法である:

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

と同等です。

+1

私はまったく同じサンプルコードを念頭に置いていました:) –

+0

ありがとうございます。ループの後、ある特定のoneCarでメソッドを呼びたい場合、それを行うことは可能ですか?または、私は必然的にそれらの参照を格納するためにArrayListを使用する必要がありますか? – Rodric

+1

複数の車を作成したい場合は、それらに参照が必要なので、普通はリストに入れます。 – khelwood

1

はい、同じ変数を同じ名前で2回宣言しているためです。カーネルの配列を作成して問題を解決できると思うので、forステートメント内の各配列フィールドにコンストラクタを使用してください。

Car cars[10]; 
for(int i=0;i<9;i++){ 
    cars[i]= new Car(); 
} 
関連する問題