Java基础之代码执行顺序深入解析
Java基础之代码执行顺序深入解析
结合实例代码分析:
public class demo6 {public static void main(String[] args) {new Son();System.out.println("--------------");new Son();System.out.println("--------------");new Father();}
}
class Father{public Father(){System.out.println("111111");}{System.out.println("222222");}static {System.out.println("333333");}
}
class Son extends Father{public Son(){System.out.println("444444");}{System.out.println("555555");}static {System.out.println("666666");}
}
编译结果:
333333
666666
222222
111111
555555
444444
--------------
222222
111111
555555
444444
--------------
222222
111111
可以看出分两种情况:
- 若类还未被加载
- 类已加载
1. 若类还未被加载
- 先执行父类的静态代码块和静态变量初始化,并且静态代码块和静态变量的执行顺序只跟代码中出现的顺序有关。
- 执行子类的静态代码块和静态变量初始化。
- 执行父类的普通代码块
- 执行父类的构造函数
- 执行子类的普通代码块
- 执行子类的构造函数
即:
333333
666666
222222
111111
555555
444444
2. 类已加载
由于static静态代码块只会执行一次,所以第二次调用Son()
不会再执行。所以执行顺序为:
- 执行父类的普通代码块
- 执行父类的构造函数
- 执行子类的普通代码块
- 执行子类的构造函数
即:
222222
111111
555555
444444
Java基础之代码执行顺序深入解析相关推荐
- Java代码执行顺序
Java代码执行顺序 1. Java初步认知 2. Javayun.java例子 3. 反编译Javayun.class文件 4. 分析Javayun_dxdump文件 5. 再来一个网上的例子Jav ...
- day9 java的实例语句块和代码执行顺序
实例语句块 每执行一次构造就会在前执行一次实例语句块 代码执行顺序
- day9 java的静态代码块和代码执行顺序
静态代码块 代码执行顺序 对于静态,不管是变量还是代码块.都是自上而下的.
- java课后习题七解析_《Java基础入门》_课后习题解析.doc
<Java基础入门>_课后习题解析 <Java基础入门>课后习题 Java开发入门 一.填空题 1.Java的三大体系分别是_JavaSE_____._JavaEE_____. ...
- LeetCode1117. Building H2O --Java解法--多线程保证执行顺序--AtomicInteger
此文首发于我的个人博客:LeetCode 1117. Building H2O --Java解法–多线程保证执行顺序–AtomicInteger - zhang0peter的个人博客 LeetCode ...
- java基础之代码碎片
java基础之代码碎片 1 类定义 2 匿名对象 3 生成随机数 4 ArrayList集合 5 静态代码块 6 super和this关键字的三种用法 7 字节输出流和字节输入流 8 复制文件 9 键 ...
- 【Linux 内核 内存管理】RCU 机制 ④ ( RCU 模式下更新链表项 list_replace_rcu 函数 | 链表操作时使用 smp_wmb() 函数保证代码执行顺序 )
文章目录 一.RCU 模式下更新链表项 list_replace_rcu 函数 二.链表操作时使用 smp_wmb() 函数保证代码执行顺序 一.RCU 模式下更新链表项 list_replace_r ...
- python装饰器调用顺序_聊一聊Python装饰器的代码执行顺序
为什么写这篇文章? 起因是QQ群里边有人提了一个问题:之前导入模块只需要1~2秒,为什么现在变成需要2~3分钟? 我的第一感觉是:是不是导入的模块顶层代码里边,做了什么耗时的事情.隔了一天,他的问题解 ...
- 日志打印、main函数中代码执行顺序
文章目录 1.设置时区 2.日志打印 3.main函数中代码执行顺序 1.设置时区 我们要设置成 CST 时区,以保证正确地显示日期.时间. 我们常看到的时区有如下几个: PST:美国太平洋标准时间, ...
最新文章
- jenkins部署web项目
- 干货合集 | 带你深入浅出理解深度学习(附资源打包下载)
- Linux计划任务与压缩归档
- USB入门系列之二:USB的连接模型
- Go——cron定时任务Demo
- 整理的一些比较基础的面试知识点
- java8自定义收集器_使用自定义收集器进行Java 8分组?
- jSignature签名的用法,一文教会你(二)后台代码
- GCC编译静态库和动态库
- 【ROS学习笔记】(十一)launch启动文件的使用方法
- Mysql 删除数据表的三种方式详解
- 16.6 假新闻识别 Fake News Detection on Social Media A Data Mining Perspective
- 一个迷茫的 大学生自学Linux的开始
- 如何在自己的网站中嵌入其他网站的页面?
- 【牛客网-公司真题-前端入门篇】——百度2021校招Web前端研发工程师笔试卷(第一批)
- OIO和NIO的区别
- 人教版初中计算机学什么,人教版初中信息技术教案全集.pdf
- 基于Android的文本语音朗读器的设计与实现(有声小说APP)
- ipv4ipv6导致微信H5支付问题
- 43、在java中一个类被声明为final类型,表示了什么意思?
热门文章
- php验证码--图片
- RHEL 6.5 rpm包安装mplyer
- NSIS打包软件(一)
- tomcat与apache区别
- ASP.NET MVC区域
- CodeForces - 1400F x-prime Substrings(AC自动机+dp)
- 牛客 - 树上博弈(思维)
- POJ - 1328 Radar Installation(贪心+思维)
- POJ - 3926 Parade(单调队列优化dp)
- CodeForces - 566A Matching Names(字典树上贪心)