変数y
は、static
とfinal
です。
- キーワード
static
は、変数をクラスのメンバーにするため、静的変数にアクセスするためにクラスのオブジェクトを作成する必要はありません。
final
キーワードは唯一の変数は、あなたがstatic final
変数を宣言したが、それを初期化していない、一度
初期化することができます。これは初期化のみできます。静的初期化剤ブロックは、インスタンス初期化子としてそれ以前キーワードstatic
と同様に定義される
静的初期化子ブロックで宣言
で
- 。
static {
// code
}
静的初期化子は、クラスがコンパイルされ実行されたときに一度だけメモリに挿入されます。
インスタンス初期設定で変数y
を初期化しました。このコードブロックは、Static
のオブジェクトが作成されるたびに実行されます。
コードがコンパイルされない理由は、final
変数y
は、クラスのオブジェクトが作成されるたびに(同じ値ですが)値8に再割り当てできるためです。
変数がfinalである必要がある場合は、静的な初期化子を作成します。
final static int y;
static {
y = 8;
}
さもないと、変数宣言でfinal
、static
または両方のキーワードを削除しているとして初期化剤のインスタンスを保ちます。
int y;
{
y = 8;
}
static int y;
{
y = 8;
}
final int y;
{
y = 8;
}
出典
2016-11-10 20:28:12
Dan