哪个将首先加载静态块或静态变量



正如我读到的那样,每个人都在说静态块将首先执行,但是当我运行一段代码时,我发现静态变量首先加载。现在这让我感到困惑,请给出适当的解释。

法典

public class MyClass 
{
    static int x=show();
    static
    {
        System.out.println("Hello Mayar");
    }
    public static int show()
    {
        System.out.println("Hello Show");
        return 1;
    }
    public static void main(String a[])
    {
        System.out.println("Hello Main");
    }
}

输出

Hello Show
Hello Mayar
Hello Main

静态块和变量按照它们在 java 源文件中出现的顺序进行评估。

根据 Java 8 关于类初始化的规范:

    接下来,按文本顺序执行类的类变量初始值设定项和静态初始值设定项
  1. ,或接口的字段初始值设定项,就好像它们是单个块一样。

最新更新