初期化の順序 - 変数の初期化 (3/3)
ここまでで、変数の既定値での初期化、コンストラクタでの初期化、 および 初期化ブロック についてみてきました。
ここでは、これらの初期化がどのような順番で行われるのか整理しましょう。
初期化の順序
Java のクラスで定義されたフィールドの初期化は次の順番で行われます。
- クラスロード時に静的初期化ブロックが実行される
ここでは static 変数のみが初期化可能 - クラスのフィールドとして宣言した変数を既定値で初期化する
- オブジェクトの生成時に初期化ブロックが実行される
- 次にコンストラクタが実行される
いつ使うか?
簡単な変数の初期化は可能ならば宣言時に行うと良いです。
int door = 4;
オブジェクト毎のパラメータを必要とせず、 上記の例で乱数を生成していましたが、そのように初期化に複雑なロジックが必要になる場合は、 初期化ブロックで変数を初期化すると良いでしょう。
コンストラクタへのパラメータなど、パラメータを受け取って初めて初期化できるコードはコンストラクタに記述する必要があります。
以上、変数の初期化について説明しました。