静的メンバ変数を初期化するには、どうすれば良いでしょうか?
静的メンバなので、
インスタンスがなくてもアクセスできますが、
その場合、コンストラクタが呼ばれません。
じゃあどこで初期化すればいいのかと言うと、
変数の後に=(代入演算子)を付けて初期化します。
class Cstatic {
public static int sdata = 10;
}
この初期化方法で全て解決しそうな感じはしますが、
大きい配列の初期化やクラス配列の初期化などは非常に面倒で、
=(代入演算子)を使った記述は、見づらくなる恐れがあります。
このような場合のために、
スタティックイニシャライザと言う機能が用意されています。
スタティックイニシャライザは、
静的メンバ変数の初期化用の関数みたいなものです。
つまり、コンストラクタの代わりのような役目を果たします。
記述方法は、static { }となります。
class Cstatic {
public static int sdata1;
public static int sdata2;
static {
sdata1 = 5;
sdata1 = 10;
}
}