Java程序的初始化顺序
2016-05-25 17:43
281 查看
Java程序的初始化顺序
其他Java笔试面试题目: Java面试笔试试题积累(每天更新)
在Java语言中,当实例化对象的时候,对象所在类的所有成员变量首先要进行初始化,当所有类成员完成初始化之后才会调用对象所在类的构造方法来创建对象.
Java程序的初始化流程一般遵循三个准则:
静态对象,变量优先于非静态对象,变量的初始化,其中静态对象或者变量只初始化一次,而非静态的可能会初始化多次
父类优先于子类
成员变量按照定义的顺序进行初始化
实际的使用中Java代码中可能存在代码块,有静态代码块和非静态代码块,加上代码块,他们执行的流程如下:
流程都在图上,就不再叙述一遍了,下面直接看一个例子:
public class InitBase { static { System.out.println("Base static block"); } { System.out.println("Base block"); } public InitBase() { System.out.println("Base constructor"); } } public class InitTest extends InitBase { static { System.out.println("Derived static block"); } { System.out.println("Derived block"); } public InitTest() { System.out.println("Derived constructor"); } public static void main(String[] args) { new InitTest(); } }
输出结果:
Base static block Derived static block Base block Base constructor Derived block Derived constructor
完毕.
相关文章推荐
- 一个关于if else容易迷惑的问题
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序