MENU

【Java Silver】オブジェクトのフィールドへの読み取りと書き込みの理解

1日1問、Java Silver試験対策に役立つ練習問題を解きましょう。

問題

次のプログラムを実行した場合、最終的に出力される値はどれでしょうか?正しい選択肢を選んでください。

class Counter {
                    static int count = 0;

                    Counter() {
                        count++;
                    }
                }

                public class Main {
                    public static void main(String[] args) {
                        Counter c1 = new Counter();
                        Counter c2 = new Counter();
                        Counter c3 = new Counter();
                        System.out.println(Counter.count);
                    }
                }

選択肢

  • A. 0
  • B. 1
  • C. 2
  • D. 3

答えと解説

回答を見る

答え

D. 3

解説

解説のポイント:

  • 静的フィールドの理解
  • コンストラクタによるフィールドの変更
  • インスタンス生成の効果
  • 静的アクセス

まず、Counterクラスの静的フィールドcountはクラス単位で管理されます。静的フィールドは、クラスのインスタンスに関わらず共有されるため、どのCounterオブジェクトからでも同じcountフィールドを参照します。

次に、このプログラムではCounterオブジェクトが3つ生成されます。それぞれのオブジェクトが生成されるたびに、Counterクラスのコンストラクタが呼び出され、countが1ずつ増加します。したがって、合計でcountは3になります。

最後に、静的フィールドはクラス名を通してアクセスすることが推奨されます。このため、System.out.println(Counter.count);という形で正しくアクセスされています。この部分も静的な特性に基づいて正しい理解が求められます。

この問題では、ポリモーフィズムの間違いや静的フィールドの誤用といった基礎的なつまずきポイントをテストしています。コンストラクタの呼び出しごとに変数がどのように操作されるかを理解しておくと、多くのプログラミング場面で役立ちます。

目次