类的加载顺序static
static 属性 代码块 静态先执行
//执行的先后顺序
public class Main {
public Main() {//第五执行
System.out.println("Main");
}
static{ 第一执行(只执行一次)
First f = new First();
Second s = new Second();
Third t = new Third();
}
{ //第四执行
First f = new First();
f.fTest();
}
public static void main(String[] args) {
Main m = new Main();
}
static First f = new First(); //第二执行()
static Second s = new Second();//第三执行()
}
class First{
public First() {
fTest();
System.out.println("First:构造方法");
}
public void fTest(){
System.out.println("First: fTest()");
}
}
class Second{
public Second() {
sTest();
System.out.println("second:构造方法");
}
public void sTest(){
System.out.println("Second: sTest()");
}
}
class Third{
public Third() {
tTest();
System.out.println("Third:构造方法");
}
public void tTest(){
System.out.println("Third: tTest()");
}
}
//执行结果:
Main 方法代码块
Third: tTest()
Third:构造方法
First: fTest()
First:构造方法
Second: sTest()
second:构造方法
普通代码块
First: fTest()
First:构造方法
First: fTest()
Main
普通代码块
First: fTest()
First:构造方法
First: fTest()
Main