举例说明Java中代码块的执行顺序
来源:互联网 发布:linux 合并文件夹 编辑:程序博客网 时间:2024/06/06 09:38
见:http://www.jb51.net/article/70296.htm
maven/Java/web/bootstrap/dataTable/app开发QQ群:566862629。希望更多人一起帮助我学习。
结论
这里先把整理好的结论抛给大家,然后我在写个程序来验证我们的结论。在Java类被new的过程中,执行顺序如下:
- 实现自身的静态属性和静态代码块。(根据代码出现的顺序决定谁先执行)
- 实现自身的非静态属性和非静态代码块。
- 执行自身的构造函数。
在实现继承的类被new的过程中,初始化执行顺序如下:
- 实现父类的公共静态属性和静态块级代码。
- 实现自身的静态属性和静态块级代码。
- 实现父类的非静态属性和非静态代码块。
- 执行父类的构造函数。
- 实现自身的非静态属性和非静态代码块。
- 执行自身的构造函数。
这里需要简单的介绍一下静态代码块和非静态代码块。
1. 静态代码块:
static {
}
2. 非静态代码块
{
}
静态代码块和非静态代码块的异同点如下:
- 相同点:都是JVM加载类时且在构造函数执行之前执行,在类中都可以定义多个,一般在代码块中对一些static变量进行赋值。
- 不同点:静态代码块在非静态代码块之前执行(静态代码块 > 非静态代码块)。静态代码块只在第一次new时执行一次,之后不再执行。而非静态代码块每new一次就执行一次。
验证
对于结论的最好验证就是写出代码来进行结果证明。首先,来看一下无继承的类初始化时的执行顺序,代码如下:
执行结果:
- 静态属性
- 静态代码块
- 非静态属性
- 非静态代码块
- 无参构造函数
接下来,我们验证一下,当Java类实现继承后,执行顺序是否和我们的结论吻合。测试代码如下:
执行结果如下:
- 父类-静态属性
- 父类-静态代码块
- 静态属性
- 静态代码块
- 父类-非静态属性
- 父类-非静态代码块
- 父类—无参构造函数
- 非静态属性
- 非静态代码块
- 无参构造函数
阅读全文
0 0
- 举例说明Java中代码块的执行顺序
- 举例说明Java中代码块的执行顺序
- 举例说明java中静态代码块、非静态代码块、构造函数的执行顺序
- 举例说明Java中代码块的执行顺序(非静态代码块)
- java中代码块的执行顺序
- Java中代码块的执行顺序
- 举例说明构造代码块、静态、非静态代码块的执行顺序
- Java代码中代码块的执行顺序
- Java中static代码块、普通代码块和构造代码块的执行顺序
- Java-Java类中代码块的执行顺序
- java中代码块执行顺序
- Java中静态代码块执行顺序
- java 中代码块、构造函数的执行顺序
- java中静态代码块的执行顺序
- Java中各类代码块的执行顺序
- java中代码块的执行顺序--静态代码块,构造器,普通代码块,构造块,main主函数
- 继承中代码块的执行顺序
- Java代码块的执行顺序
- 常用adb命令、git命令总结
- 零配置-----5、MvcConfig
- 同时安装Python2和3 怎么用pip
- ACE网络服务器程序开发注意事项
- grok 和 JSON 检测
- 举例说明Java中代码块的执行顺序
- 将图片( PNG, BMP, JPEG )转成 svg, 再转成字体图标
- html 去调边框阴影
- 一个屌丝程序猿的人生(八)
- java中Set集合是如何识别相同对象的
- 链表-leetcode 141 Linked List Cycle
- 你还在对着手机干唱?k歌神器挑选法则
- Hibernate中session.get()方法的作用?
- Unity3d架构之-Unity MVC框架 StrangeIoC