Java Silver試験の範囲を効率的に学ぶために、今回はクラスローダとその動作について学びます。
問題
次のプログラムを実行した場合の出力結果を選択してください。正しい答えを選んでください。
class Main {
static {
System.out.println("Static Block");
}
{
System.out.println("Instance Block");
}
Main() {
System.out.println("Constructor");
}
public static void main(String[] args) {
new Main();
}
}
選択肢
- A. Static Block
- B. Instance Block
- C. Constructor
- D. Static Block, Instance Block, Constructor
- E. Instance Block, Static Block, Constructor
答えと解説
回答を見る
答え
D. Static Block, Instance Block, Constructor
解説
Javaプログラムの実行過程では、クラスのロード、初期化、インスタンス化が順次行われます。
- 基本説明: クラスが最初にロードされるとき、staticブロックが一度だけ実行されます。次にインスタンスブロックがインスタンス化ごとに実行され、最後にコンストラクタが呼び出されます。
- 誤答理由: Static及びInstanceのブロックの実行順序と、複数回実行される特性を知らないと間違えることがある。
- つまずきポイント: Staticブロックはクラスロード時に一度のみ、Instanceブロックはインスタンス生成ごとに実行される特性を混同しやすい。
- 発展知識: Staticブロックはクラスの静的メンバの初期化によく使われる。Instanceブロックは初期化処理を共通化するために用いられる場合があるが、コンストラクタの中にまとめても同様の効果が得られる。