在声明之前分配静态变量

Dat*_*yen 5 java static

我正在学习Java并编写下面的简单代码:

public class Test {

    private int a = b;  
    private final static int b = 10;

    public int getA() {
        return a;
    }
}

public class Hello {

    public static void main(String[] args) {
        Test test = new Test();
        System.out.println(test.getA());
    }

}
Run Code Online (Sandbox Code Playgroud)

结果:10.做得好!它运行成功,没有错误.

任何人都可以解释为什么我可以在声明它之前分配一个静态变量?

Era*_*ran 5

分配

private int a = b;  
Run Code Online (Sandbox Code Playgroud)

在创建新实例时Test(就在调用构造函数之前)发生.

静态变量的声明和初始化b发生在创建实例之前,加载类时.

语句的顺序无关紧要,因为静态变量总是先被初始化.