在java中静态块之前或之后声明静态变量之间的区别

Mad*_*hav 3 java

代码1:

       public class StaticBlockExample1
      {
        static {  value = 20;  }

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

              System.out.println(" Value = " + value);
        }
    }
Run Code Online (Sandbox Code Playgroud)

StaticBlockExample1的输出为10

代码2:

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

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

StaticBlockExample2的输出为20.

与上述例子的输出相混淆.在静态块之前或之后声明静态变量有什么意义吗?

Hen*_*nry 15

是的,静态块和静态字段初始化按照在输入文件中找到它们的顺序执行.