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

时间:2013-01-01 11:18:48

标签: java

代码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。

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

3 个答案:

答案 0 :(得分:15)

是的,静态块和静态字段初始化按输入文件中的顺序执行。

答案 1 :(得分:1)

最重要的是你的inicializations的顺序。 - 第一种情况 - 10被定义为第二种

static int value = 10;

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

  static {
            value = 20;
        }  

答案 2 :(得分:1)

初始化顺序不同

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

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