• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:初心者で練習問題をしています)

初心者がJavaで練習問題をしようとしています。Carクラスの燃料の使い方について教えてください。

このQ&Aのポイント
  • Javaで練習問題をする初心者が、Carクラスの燃料の使い方について質問しています。
  • Carクラスのインスタンスを作成し、フィールドである燃料を操作している際に問題が発生しています。
  • car2とcar3のフィールドの値が一緒になってしまう問題があり、その解決方法を教えて欲しいとのことです。

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

  • ベストアンサー
回答No.1

簡単に説明します。 キーワードは 【Javaはオブジェクトを値ではなく参照として管理している】です。 1.Car car2 = new Car(); でメモリ空間にはcar2というインスタンスを生成します。 2.Car car2 = new Car(); でメモリ空間にはcar2とは別のcar3という情報を確保します。 3.car3 = car2; この代入によりcar3というクラスはcar2で作ったメモリ空間を参照することになります。 つまり、car2もcar3も2で作ったメモリを参照することになります。 つまりjavaの=というのは値をその【メモリ空間に配置された情報をコピーする】わけではなく、【どこを参照する?】という式になるのです。 3.で確保されたメモリ空間はどこからも参照されなくなるので、ガーベジコレクションといわれるJavaVMにより勝手にクリアされます。 ですので、方法としてはcar3 = car2;は使用せず、car1やcar2を作成したのと同様に行うことが一般的です。 ただ、cloneというメソッドもあり、コピーを作成することが出来る方法もあります。が、こちらは以上のことを理解されてから適切に使うことをお勧めします。

参考URL:
http://www.javaworld.jp/technology_and_programming/-/27077.html
arumisoy
質問者

お礼

ありがとうございます 助かります 読んですぐにはすべてが理解できませんが、 これからも勉強していきます

すると、全ての回答が全文表示されます。

関連するQ&A