在java中先执行静态类的方法和成员,再执行普通花括号内的方法,最后执行构造方法。
而java在加载类的时候会先加载静态快的代码并调用
public class Test {
public Test()
{
System.out.println("constructor");
}
static {
System.out.println("static");
}
{
System.out.println("normal");
}
public static void main(String[] args) {
System.out.println("main");
}//这个代码输出为 static main
}
public class Test {
public Test()
{
System.out.println("constructor");
}
static {
System.out.println("static");
}
{
System.out.println("normal");
}
public static void main(String[] args) {
Test test=new Test();
}//这个输出为static normal cinstructor
}
java类的初始化顺序为 静态代码块内的变量 静态代码块(静态对象只初始化一次)
非静态代买快内的变量 非静态代码块(可能会初始化多次)