哪个会加载第一个静态变量或静态块?

Hab*_*blu 14 java stack static core

我的一个朋友问我哪个会加载第一个静态变量或静态块.

我的答案指向静态变量.

所以他给了我两个方程,并说要区分它们的
第一个方程式

public class Some {
    public static void main(String args[])
    {
        System.out.println(Some.x);
    }
    static {
        System.out.println(Some.x);
    }
    static int x=90;
}
Run Code Online (Sandbox Code Playgroud)

O/P:0 90

第二个等式

public class Some {
    public static void main(String args[])
    {
        System.out.println(Some.x);
    }
    static int x=90;
    static {
        System.out.println(Some.x);
    }
}
Run Code Online (Sandbox Code Playgroud)

O/P:90 90

我试图反编译字节码,发现它对于上述两个方程都是一样的.请帮我区分它们.当静态变量初始化时我很困惑.

Jam*_*mes 6

静态块按它们在源文件中出现的顺序初始化.关于堆栈溢出已经有几个与此相关的问题......这个问题对你有一个很好的答案:Java:初始化静态最终字段的顺序是什么?