Java 三种代码块(静态代码块、普通代码块、构造代码块)的区别

来源:互联网 发布:spark入门例子linux 编辑:程序博客网 时间:2024/06/07 05:19
public class FatherClass {    {        System.out.println("父类普通代码块1");    }    static {        System.out.println("父类静态代码块");    }    {        System.out.println("父类普通代码块2");    }    public FatherClass() {        System.out.println("父类构造方法");    }}

public class SonClass extends FatherClass {    {        System.out.println("子类普通代码块1");    }    static {        System.out.println("子类静态代码块");    }    {        System.out.println("子类普通代码块2");    }    public SonClass() {        System.out.println("子类构造方法");    }    public static void main(String[] args) {        System.out.println("main方法");        new SonClass();        System.out.println("------华丽丽的分割线------");        new SonClass();        System.out.println("------华丽丽的分割线------");        new SonClass();    }}

执行结果:

父类静态代码块
子类静态代码块
main方法
父类普通代码块1
父类普通代码块2
父类构造方法
子类普通代码块1
子类普通代码块2
子类构造方法
——华丽丽的分割线——
父类普通代码块1
父类普通代码块2
父类构造方法
子类普通代码块1
子类普通代码块2
子类构造方法
——华丽丽的分割线——
父类普通代码块1
父类普通代码块2
父类构造方法
子类普通代码块1
子类普通代码块2
子类构造方法


总结:

  • 静态代码块只执行一次
  • 普通代码块在每次创建对象时都会执行
  • 多个普通代码块的执行顺序由它们在代码中出现的顺序决定(先出现先执行)
  • 子类在创建对象的时候会默认先创建出一个父类对象
  • 执行顺序:静态代码块 > mian方法 > 普通代码块 > 构造方法
2 0