java 静态代码块 静态方法区别

静态代码块是主动执行的,在项目启动的时候就初始化, 静态方法在类加载的时候 就已经加载 可以用类名直接调用,两者的区别就是:静态代码块是自动执行的;静态方法是被调用的时候才执行的.

代码执行顺序

class Parent {
    {
        System.out.println("parent block");//3
    }
    static {
         System.out.println("parent static block");//1
    }

    public Parent() {
        System.out.println("parent constructor");//4
    }
}

class Child extends Parent {
    {
        System.out.println("child block");//5
    }
    static {
        System.out.println("child static block");//2
    }

    public Child() {
      System.out.println("child constructor");//6
    }
}

public class Test{
    public static void main(String[] args) {
    new Child();
    }
}

输出结果:
parent static block
child static block
parent block
parent constructor
child block
child constructor
对象的初始化顺序:
执行父类静态的内容
执行子类的静态的内容
父类非静态代码块,接着执行父类的构造方法。
子类非静态代码块,接着执行子类的构造方法。
总之一句话,静态代码块内容先执行,接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法

欢迎加入学习交流群569772982,大家一起学习交流。


java部落
90 声望13 粉丝