package Test;
import java.util.ArrayList;
import java.util.Vector;
public class TEst {
static TEst test=new TEst();
Sub sub=new Sub();
static{
System.out.println("6");
}
public TEst(){
System.out.println("5");
}
public static void main(String[] args){
System.out.println("7");
}
}
class Super{
public Super(){
System.out.println("3");
}
static {
System.out.println("1");
}
}
class Sub extends Super{
static {
System.out.println("2");
}
public Sub(){
System.out.println("4");
}
}
静态代码块和静态字段(成员)的执行顺序取决于代码顺序,谁在前面谁先执行,静态字段(成员)是在静态代码块中初始化的.
非静态成员是在构造器中初始化的.
一般来说,静态--在第一次载入JVM中第一个执行,但当第一个静态为静态字段时,初始化了TEst类,二初始化这个类需要Sub类,Sub类需要Super类,因此将Super类载入JVM,执行了Super的静态代码块,然后将Sub载入,执行Super的静态代码块,接着Sub的构造函数,Sub的构造函数,然后在TEst的构造器中初始化,接着才能进行 static 的TEst的初始化,执行TEst的构造函数.之后执行位于静态字段之后的静态代码块,,,,