Java 面试题-static代码块和构造方法的执行顺序_构造方法


如下代码的执行顺序分析

package com.crawl.crawlbigdata;

import java.util.HashMap;

/**
 * @Description TODO
 * @ClassName HashMaptest
 * @Author 康世行
 * @Date 10:36 2022/9/16
 * @Version 1.0
 **/
public class HashMaptest {

    public static void main(String[] args) {

                A ab=new B();
                ab=new B();

    }


}
class A {
    static {
        System.out.println("1");
    }

    public A() {
        System.out.println("2");
    }
}
class B extends A{
    static {
        System.out.println("a");
    }

    public B() {
        System.out.println("b");
    }
}

流程图分析

Java 面试题-static代码块和构造方法的执行顺序_构造方法_02

执行结果

Java 面试题-static代码块和构造方法的执行顺序_jvm_03


因为静态代码块只初始化一次,所以第二次只输出 父类构造方法和子类构造方法里的值