Java中的初始化顺序

Moh*_*oud 5 java

我想问为什么java在非静态对象之前初始化静态对象?
在这个例子中,b3将在b4和b5之后初始化:

class Cupboard { 
    Bowl b3 = new Bowl(3); 
    static Bowl b4 = new Bowl(4); 
    Cupboard() {}
    static Bowl b5 = new Bowl(5); 
}
Run Code Online (Sandbox Code Playgroud)

Amb*_*ber 17

因为类的静态成员是在创建类的任何实例之前创建和初始化(在类加载期间) - 所以可以在不创建类的实例的情况下访问它们.非静态成员是按实例创建的,因此等到为该实例初始化创建实例.