• ベストアンサー

new クラス名(); が必要なとき   必要ないとき

class Sample { public static void main(String args[]) { Car car1; car1 = new Car(); Car car2; car2 = car1; car1 = null; ・・・・・・・      ・・・・・・・      ・・・・・・・ } } 途中省略してあるのですが、このようなソースコードがありました。 car2オブジェクトはなぜ宣言だけでいいのでしょうか? car1のように、new Car(); は何故必要ないのでしょうか?これで何故代入ができるのかわかりません。 どのようなときに、new クラス名(); が必要なのでしょうか? 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

car1,car2は、参照で、いわゆるCでいうポインタみたいなもので、newしたときに実体が作成されて、 car1 = new Car(); としたら、car1が、newで作成したオブジェクトを指すようになります。 car2 = car1; は、新たにコピーして代入されるというのではなく、 (新たにコピーして代入される場合もありますが) その単に参照先をコピーしたということで、 car1に対する操作とcar2に対する操作は同じになります。 >どのようなときに、new クラス名(); が必要なのでしょうか? 初期化する時(実体が必要な時)に、必要だと思います。

noname#114571
質問者

お礼

あーなるほど、そういうことだったんですね。 ありがとうござました。

その他の回答 (1)

  • RAPTsong
  • ベストアンサー率42% (74/175)
回答No.2

この結果、car2 は car1 と同じ物を指していることになります。 実体は1つで、それを参照しているのが、car1 と car2 ということになります。 なお、car1 = new Car(); も代入文です。 new Car() で作成されたインスタンスを car1 に代入しています。

noname#114571
質問者

お礼

ありがとうございました。 >car1 = new Car(); も代入文です そうですよね。本にもそうありました。

関連するQ&A