MENU

【Java Silver 試験】クラスの宣言とインスタンスの使用【オブジェクトのライフサイクル】

今日もJava Silverの学習を深めましょう。次のプログラムを考えてみてください。

問題

次のコードを実行した場合の出力はどれでしょうか?正しい選択肢を選んでください。

class Car {
                String color;
                Car(String color) {
                    this.color = color;
                }
            }

            public class Main {
                public static void main(String[] args) {
                    Car car1 = new Car("Red");
                    Car car2 = new Car("Blue");
                    car1 = car2;
                    System.out.println(car1.color);
                }
            }

選択肢

  • A. Red
  • B. Blue
  • C. コンパイルエラー
  • D. 実行時エラー

答えと解説

回答を見る

答え

B. Blue

解説

解説のポイント:

  • オブジェクトの参照と再割り当て
  • メモリ内でのオブジェクトの状態
  • ガベージコレクションについて

このJavaプログラムでは、最初に2つのCarオブジェクトが生成され、それぞれのcolor属性は”Red”と”Blue”に設定されます。

その後、car1 = car2;とすることでcar1の参照先がcar2と同じCarオブジェクトを指すようになります。

この状態でSystem.out.println(car1.color);を実行するとcar1は”Blue”のcolor属性を持つCarオブジェクトを参照しているため、出力は”Blue”になります。

不要になった”Red”を持つCarオブジェクトは他から参照されていないのでガベージコレクションの対象になります。

目次