类的初始化顺序

来源:互联网 发布:自考好还是网络教育好 编辑:程序博客网 时间:2024/06/05 11:14


类的初始化顺序


通过以下几个示例来分析

示例1:


可以看到 创建了两个实例却只执行了一次静态代码块

首先执行了静态代码块中的内容->构造代码块->构造方法

(在代码块中声明的变量可以视为成员变量 代码块外无法访问)

示例2:


如图所示 main()方法中没有任何执行语句 但仍然输出了静态代码块中的内容 

结合示例1 得出结论:静态成员变量在编译期间初始化 静态代码块在编译期间执行 且只执行一次

示例3:

可以看到其执行顺序  :父类静态代码块->子类静态代码块->父类构造代码块->父类构造方法->子类构造代码块->子类构造方法

通过debug观察(因为debug不好街头 所以直接得出结论)

查找父类->父类静态代码块->子类静态代码块->(创建子类) 进入子类构造方法->通过子类构造方法的super()(不显示 jvm默认添加)调用父类构造方法->父类构造代码块->父类构造器->子类构造代码块->子类构造器



-version1.0 2015.1.26


0 0
原创粉丝点击