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

Java 变量创建和静态块的执行顺序,java,Java,此执行的输出为2。有人能解释一下为什么不1?创建和初始化序列变量以及执行静态块的步骤? 请查看java文档 然后清楚地提到,无论静态块在那里有多大,它们都将按照它们出现的顺序作为单个块执行 所以 我的理解是,java将您的代码视为 class F { static { i = 1; } static int i = 2; public static void main(String[] args) { System.out.

此执行的输出为
2
。有人能解释一下为什么不
1
?创建和初始化序列变量以及执行静态块的步骤?

请查看java文档

然后清楚地提到,无论静态块在那里有多大,它们都将按照它们出现的顺序作为单个块执行

所以

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

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

这就是您获得输出2的原因


希望这有帮助

嗨,你需要问一个问题!谢谢你,亚当。这个执行的输出是“2”,有人能解释为什么不是“1”吗。其中序列变量被创建和初始化,静态块被执行。谢谢Avi。如果我添加System.out.println(i);在i=1以下的静态块中;我得到编译时错误。
static{
i=1;
i=2;
}