java静态块与构造快

public class B
{
    public static B t1 = new B();
    public static B t2 = new B();
    {
        System.out.println("构造块");
    }
    static
    {
        System.out.println("静态块");
    }
    public static void main(String[] args)
    {
        B t = new B();
    }
}

A、静态块 构造块 构造块 构造块
B、构造块 静态块 构造块 构造块
C、构造块 构造块 静态块 构造块
D、构造块 构造块 构造块 静态块

静态块:用static申明,JVM加载类时执行,仅执行一次
构造块:类中直接用{}定义,每一次创建对象时执行
执行顺序优先级:
1、父类静态(代码块,变量赋值二者按顺序执行)
2、子类静态
3、父类构造代码块
4、父类构造方法
5、子类构造代码块
6、子类构造方法

  • main函数属于静态子类代码块
    静态块按照申明顺序执行,所以先执行父类静态代码块public static B t1 = newB();该语句创建对象,则又会调用构造块,输出构造块
    接着执行public static B t1 = new B();输出构造块
    再执行
    static
    {
    System.out.println(“静态块”);
    }输出静态块
    最后main方法执行,创建对象,输出构造块。
发布了41 篇原创文章 · 获赞 1 · 访问量 4706

猜你喜欢

转载自blog.csdn.net/tomorrow_shoe/article/details/98670663
今日推荐