类全局变量的初始化,两种方式的区别

public class Test implements ITest {
private List schoolList = new ArrayList();

public Test() {
    super();
}

}

public class Test implements ITest {
private List schoolList ;

public Test() {
    super();
            schoolList = new ArrayList<School>();
}

}
有什么区别吗?两者相比有什么优劣之处吗

jvm初始化的顺序问题,至于优劣看场景吧,看下代码便知:

 public class Demo {
    private Inner inner = new Inner("field");
    static {
        new Inner("static block");
    }
    public Demo() {
        this.inner = new Inner("constructor");
    }

    public static void main(String[] args) {
        new Demo();
    }
}

class Inner{
    public Inner(String place) {
        System.out.println("inited in " + place);
    }
}

类的初始化顺序,你可以去了解下。