public class Test2 {
public static void main(String[] args) {
System.out.println("main starts");
T t=new T();
}
}
class T{
static {
G g=new G();
}
T(){
System.out.println("T starts");
}
int a=5;
static int b=7;
}
class G{
int b=5;
public void f(){
System.out.println("f() starts");
}
G(){
System.out.println("G starts");
}
}
输出:
main starts
G starts
T starts
说明:
1、”从main进入“输出“main starts”定义变量T t=new T();
2、加载类T,初始化类T中的static{G g=new G();}块儿,这里的static块只会执行一次
3、其中这时又加载类G,初始化b=5,然后输出G starts,g有了值,
4、之后初始化static b=7,然后初始化a=5,然后输出T starts,这个static只会执行一次
5、然后t也就有了值