次のコードは正常にコンパイルされます。私の理解あたりとして変数は、まさにここに静的初期設定子の後に静的変数を宣言する
class A {
static {
y=20;
z=10;
}
static int z;
static int y=30;
{
w=10;
}
int w;
public static void main(String args[]){
System.out.println(y);
}
}
が起こっているし、それらを使用する前に宣言する必要のコメントを読んだ後、質問を変更しました。 ここで、出力は30 そこで変数宣言は、すべての初期設定ステートメントは、それがクラスをロードするとき
* "私の理解によれば、変数は宣言する必要があります" *なぜブロックと変数の配置がここで重要と思われますか? – Tom
*ローカル*変数は、最初に使用する前に宣言する必要があります。フィールド数はあまり多くはありません... –
両方のリンクは重複としては機能しませんが、(暗黙のうちに)フィールドのプレースメントはさまざまです:[インスタンス変数の宣言の配置](// stackoverflow.com/q/218573) // [Javaのベストプラクティス - クラス変数の前にコンストラクタを宣言していますか?](// stackoverflow.com/q/10264447) – Tom