MENU

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

Java Silver試験対策として、クラスの宣言とインスタンスのライフサイクルに関する問題に挑戦しましょう。

問題

次のプログラムを実行するとどのような出力が得られるでしょうか。正しい選択肢を選んでください。

class Car {
                String brand;
                
                Car(String brand) {
                    this.brand = brand;
                }
                
                void displayBrand() {
                    System.out.println(this.brand);
                }
            }
            
            public class Main {
                public static void main(String[] args) {
                    Car car1 = new Car("Toyota");
                    Car car2 = car1;
                    car1.displayBrand();
                    car2.brand = "Honda";
                    car1.displayBrand();
                }
            }

選択肢

  • A. Toyota, Honda
  • B. Toyota, Toyota
  • C. コンパイルエラー
  • D. 実行時エラー

答えと解説

回答を見る

答え

A. Toyota, Honda

解説

解説のポイント:

  • オブジェクトの参照と参照のコピー
  • 同じオブジェクトを指す複数の参照

Javaでは、クラスのインスタンスはオブジェクトとしてメモリに配置され、変数はこのオブジェクトを指す参照を保持します。

このプログラムでは、car1は”Toyota”というブランドのCarオブジェクトを参照しています。そしてcar2car1を代入することで、car2も同じCarオブジェクトを参照します。

car2.brand = "Honda";という行でcar2を通じてブランドを”honda”に変更すると、同一オブジェクトを示すcar1も影響を受け、ブランドが更新されます。結果として、2回のdisplayBrandメソッド呼び出しは”Toyota”と”Honda”を出力します。

このように、オブジェクトの参照を理解することは、オブジェクトや変数操作の基礎となります。

目次