变量创建和静态块的执行顺序

时间:2015-04-22 03:47:09

标签: java

class F
{
    static
    {
      i = 1;
    }
    static int i = 2;
    public static void main(String[] args)
    {
      System.out.println(i);
    }
}

此执行的输出为2。有人可以解释为什么不1?在哪个序列变量中创建并初始化并执行静态块?

1 个答案:

答案 0 :(得分:3)

http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html

请检查java文档。

然后清楚地提到无论静态块如何存在,它们将按照它们出现的顺序作为单个块执行

所以,

我的理解是java正在将您的代码视为

static{
i=1;
i=2;
}

static int i;

这就是你得到输出2

的原因

希望这有用