NO.49 代码执行顺序

我们通过案例来深化java中代码的运行顺序。

public class App {

  private static App d = new App();

  private SubClass t = new SubClass();

  static {

    System.out.println(3);

  }

  public App() {

    System.out.println(4);

  }

  public static void main(String[] args) {

    System.out.println("Hello");

  }

}

class SuperClass {

  SuperClass() {

    System.out.println("构造SuperClass");

  }

}

class SubClass extends SuperClass {

  static {

    System.out.println(1);

  }

  public SubClass() {

    System.out.println(2);

  }

}

以上代码执行结果为:

1)1----App类依赖于SubClass类,所以会先把SubClass类的字节码加载进JVM

2)构造SuperClass----会先调用父类的构造器

3)2----非static字段的初始化其实就在构造器中,会优先构造器的其他语句执行的

4)4----然后调用App的构造器

5)3----加载App的静态资源

6)Hello----运行主方法

你可能感兴趣的:(NO.49 代码执行顺序)