static变量,static代码块,构造函数,代码块等的加载顺

2018-11-15  本文已影响11人  sendos
public class Main {
    public Main() {
        System.out.println("construct invoke");  // 执行顺序6
    }
    static int i = 4;  // 执行顺序1
    static {
        i++;
        System.out.println("first static invoke i = " + i);  // 执行顺序2
    }
    private int j = 0;  // new 对象之后才会开始执行  执行顺序4
    {
        System.out.println("匿名代码块执行" + j);  // new 之后才执行  执行顺序5
    }
    static {
        System.out.println("second static invoke");  // 执行顺序3
    }
    static void fun() {
        System.out.println("call static function");  // 只有在调用的时候才会执行
    }
    public static void main(String [] args) {
        new Main();
        Main.fun();
    }
}

运行结果:


image.png

以下代码块只发生在实例对象时,并且没实例化一次对象,都会执行一轮


静态方法只有在调用的时候,会有执行。

上一篇下一篇

猜你喜欢

热点阅读