3

コード1:

       public class StaticBlockExample1
      {
        static {  value = 20;  }

        static int value = 10;
        public static void main(String[] args) {

              System.out.println(" Value = " + value);
        }
    }

StaticBlockExample1の出力は10です

コード2:

  public class StaticBlockExample2 
      {
        static int value = 10;
        static {    value = 20;     }   

        public static void main(String[] args)
           {
            System.out.println(" Value = " + value);
           }
      }

StaticBlockExample2の出力は20です。

上記の例の出力と混同されています。静的ブロックの前または後に静的変数を宣言する意味はありますか?

4

3 に答える 3

15

はい、静的ブロックと静的フィールドの初期化は、入力ファイルで見つかった順序で実行されます。

于 2013-01-01T11:22:48.040 に答える
1

最も重要なのは、初期化の順序です。- 1 番目のケース - 10 は 2 番目のケースとして定義されます

静的 int 値 = 10;

2番目のケースでは、ブロックは2番目です

  static {
            value = 20;
        }  
于 2013-01-01T11:25:54.507 に答える
1

初期化の順番が違う

最初:変数宣言の前に静的ブロックを定義します

2番目:変数宣言の後に静的ブロックを定義します

于 2013-01-01T11:29:24.537 に答える