イニシャライザ(initializer)とは、クラスが初期化されたときやインスタンスが生成されたときに、その直後に変数を初期化します。何か特別な計算をした値を初期化の直後に代入したいとき等に利用します。イニシャライザ(initializer)は、クラス変数ならクラスが初期化されるときに実行され、インスタンス変数ならインスタンスが生成されたときに実行します。通常、インスタンス変数はコンストラクタで初期化できます。4」で初期化されています。上記のプログラムは、インスタンス変数なのでインスタンスを生成し、コンストラクタを利用して初期化できます。ところが、クラス変数の場合はインスタンスを生成しなくても使用できるので、コンストラクタは必要ありません。クラスが初期化される直後にクラス変数を初期化したいのであれば、コンストラクタではなく「スタティックイニシャライザ(静的初期化子)」を使用します。イニシャライザを記述する箇所は、初期化の対象となるクラスフィールド宣言の後(下)であり、そのクラスのフィールドやメソッドを記述できる箇所なら記述できます。//ここにクラス変数を初期化する処理を記述します。ブロック」・「staticブロック」とも呼ばれています。それでは、スタティックイニシャライザを使用したクラスを作成します。このクラスは、1つの要素に6個の要素数のpublicでstaticなフィールド、1次元配列を宣言し、スタティックイニシャライザで「10~60」を代入して表示するクラスです。このフィールドが初期化されるのは、このクラスのインスタンスを生成したり、クラスメソッドが呼び出されたり等、このクラスを利用した時に初期化は行われます。次のサンプルプログラムでは、クラスを利用した直後にスタティックイニシャライザを利用して、6個の要素数をもつ配列に「10~60」を代入します。インスタンスフィールドの場合、通常はコンストラクタで初期化できます。Initializer)を利用すると便利です。インスタンスイニシャライザを記述する箇所は、スタティックイニシャライザと同じで、初期化の対象となるインスタンスフィールド宣言の後(下)であり、そのクラスのフィールドやメソッドを記述できる箇所なら記述できます。実行のタイミングは、インスタンスイニシャライザが先に実行されてから、コンストラクタが実行されます。//ここにインスタンス変数を初期化する処理を記述します。次のサンプルプログラムでは、ただ数を当てるというだけのシンプルな数当てゲームを作成しました。複数の人が1~5の番号を当てるゲームです。今回はゲームの内容が3種類あり、一つの枠から1~5を当てれば当選・二つの枠からそれぞれ1~5を当てれば当選・三つの枠からそれぞれ1~5を当てれば当選といったように人によっては予想する数字の数が異なります。そのためコンストラクタを多重定義しています。今回は3種類なので少ないのですが、これが多くなると全てのコンストラクタに、順番を格納する処理と当選番号を格納する処理を記述しなければなりません。その為に一度に全てのインスタンスの初期化をインスタンスイニシャライザを使用して初期化しています。順番を示すクラスフィールドと、当選番号が格納されたインスタンスフィールド(配列)を初期化しています。今回は三つのクラスを三つのファイルにわけました。一つ目は、それぞれのプレイヤーが選んだゲームの種類の当選番号と順番を初期化して格納する「Player」クラスです。二つ目のクラスは、ゲームをスタートさせ、それぞれのプレイヤーの当たり判定をしている「GameStart」クラスです。三つ目は、それぞれのプレイヤーのインスタンスを生成するクラス「KazuateGame」です。