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

最重要的是您的初始化顺序。- 第一种情况 - 10 被定义为第二种

静态整数值 = 10;

在第二种情况下,块是第二个

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

初始化顺序不同

首先:在变量声明之前定义静态块

第二:在变量声明之后定义静态块

于 2013-01-01T11:29:24.537 回答