类的加载顺序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

posted @ 2017-08-27 21:59  王者之笔  阅读(401)  评论(0编辑  收藏  举报