Javaの静的変数はいつ初期化されますか。
Javaの静的変数はクラスが読み込まれる時点で初期化されます。クラスの読み込み時には、オブジェクトのインスタンス化時と、静的変数や静的メソッドにアクセスする時の2つのタイミングがあります。
クラスのオブジェクトを初期化する際、まずそのクラスのバイトコードファイル(.classファイル)を読み込み、静的変数をデフォルト値で初期化します(例:int型のデフォルト値は0)。その後、静的コードブロックが順番に実行されます。
クラスの静的変数や静的メソッドにアクセスする際には、そのクラスのバイトコードファイルが最初に読み込まれ、静的変数が初期化され、その後に静的コードブロックが実行されます。
注意すべき点は、静的変数は1度だけ初期化されることであり、インスタンスの生成や静的変数、静的メソッドへのアクセスは関係ありません。静的変数が複数のオブジェクトで共有される場合、それらはすべて同じ静的変数を参照します。