静态代码块、非静态代码块、构造方法执行顺序

来源:互联网 发布:苹果如何清理游戏数据 编辑:程序博客网 时间:2024/05/16 06:17

代码:

public class StaticTest4{    public static void main(String[] args)    {        Child c = new Child();        Child c1 = new Child();    }}class Parent{    static    {        System.out.println("static is Parent");    }    public Parent()    {        System.out.println("constructor is Parent");    }    {        System.out.println("非静态代码块 is Parent");    }}class Child extends Parent{    static    {        System.out.println("static is Child");    }    public Child()    {        System.out.println("constructor is Child");    }    {        System.out.println("非静态代码块 is Child");    }}

运行结果:

java StaticTest4static is Parentstatic is Child非静态代码块 is Parentconstructor is Parent非静态代码块 is Childconstructor is Child非静态代码块 is Parentconstructor is Parent非静态代码块 is Childconstructor is Child

说明:
静态代码块执行时机:当你从硬盘上把class文件加载到虚拟机上时,static代码块就已经开始执行了。所以只执行一次,因为加载一次就够了
非静态代码块执行时机:初始化实际上是会被提取到类的构造器中执行,但是会比类构造器中的代码也就是构造方法先执行。执行次数和构造方法一样。
构造方法执行时机:生成对象时才会执行。new几个对象就执行几次。

0 0
原创粉丝点击