代码块:
1.静态代码块的作用:初始化静态变量。
2.构造代码块的作用:初始化构造方法。
3.局部代码块的作用:限定局部变量的生命周期。
代码:
public class Test { public static void main(String[] args) { Fu f = new Zi(); f.show(); } } class Fu { static { System.out.println("Fu 静态代码块 run"); } public Fu() { System.out.println("Fu 无参构造 run"); this.show(); } { System.out.println("Fu 构造代码块 run"); } public void show() { System.out.println("Fu show run"); } } class Zi extends Fu { public int i = 5; static { System.out.println("Zi 静态代码块 run"); } public Zi() { super(); System.out.println("Zi 无参构造 run"); } { System.out.println("Zi 构造代码块 run"); } public void show() { System.out.println("Zi show run i=" + i); } }
运行结果:
总结:
先执行父类的静态代码块,再执行子类的静态代码块,当new子类对象的时候,会先对自己的成员变量进行默认初始化(int类型为0,double类型为0.0,引用类型为null),再执行父类的构造代码块,然后调用父类的无参构造,接着对自己的成员变量进行显示初始化(int i = 5),然后执行自己的构造代码块,最后执行自己的无参构造super()之后的内容。