下面代码执行后最终的结果是:

public class StaticDemoSupper {static {System.out.println("A");}/*** */public StaticDemoSupper() {System.out.println("B");}}public class StaticDemoChild extends StaticDemoSupper {static{System.out.println("C");}/*** */public StaticDemoChild() {System.out.println("D");}public static void main(String[] args) {new StaticDemoChild();}}
A
C
B
D

执行顺序是:父类的静态代码块,子类的静态代码块 父类的构造方法,子类的构造方法

(1) 遇 到new、getstatic、putstatic或invokestatic这4条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。生成 这4条指令的最常见的Java代码场景是:使用new关键字实例化对象的时候,读取或设置一个类的静态字段(被final修饰、已在编译期把结果放入常量 池的静态字段除外)的时候,以及调用一个类的静态方法的时候。

(2) 使用java.lang.reflect包的方法对类进行反射调用的时候,如果类没有进行过初始化,则需要先触发其初始化。

(3) 当初始化一个类的时候,如果发现其父类还没有进行过初始化,则需要先触发其父类的初始化。

(4)当虚拟机启动时,用户需要指定一个要执行的主类(包含main()方法的那个类),虚拟机会先初始化这个主类。

只有上述四种情况会触发初始化,也称为对一个类进行主动引用,除此以外,所有其他方式都不会触发初始化,称为被动引用

静态代码块中会在编译阶段初始化到类的常量池中

转载于:https://www.cnblogs.com/wei-zw/p/8797739.html

Java面试题之 static执行顺序相关推荐

  1. java编程顺序,Java种的完整构造执行顺序(转)

    Java类的完整构造执行顺序(转) 转自:http://hi.baidu.com/zhengguobest/blog/item/09a97f0e0eba7dca7bcbe1b1.html 如果父类有静 ...

  2. 举例说明Java中代码块的执行顺序

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 结论     这里先把整理好的结论抛给大家,然后我在写个程序来验证我们的结论.在Java类被new的 ...

  3. java顺序结构类型,Java类的完整构造执行顺序

    这里只说一个完整的结果,至于为什么是这样的顺序,可以参考我以前的文章:深入剖析java类的构造方式 如果父类有静态成员赋值或者静态初始化块,执行静态成员赋值和静态初始化块 如果类有静态成员赋值或者静态 ...

  4. Java中finally和return执行顺序

    思考一个问题 Java异常捕获机制try-catch-finally块中的finally语句是否一定会被执行?起码在以下两种情况下是不会被执行的: 1.在try之前就返回了,try没有执行到. 2.t ...

  5. JAVA——监听器ActionListener与MouseListener执行顺序

    基本概念 监听器(Listener):监听器用于监听web应用中某些对象.信息的创建.销毁.增加,修改,删除等动作的发生,然后作出相应的响应处理.当范围对象的状态发生变化的时候,服务器自动调用监听器对 ...

  6. java 多线程Callable和Runable执行顺序问题详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt125 毫无疑问 Runnable会进行异步执行,此处不多说,主要说明Call ...

  7. java类与继承的执行顺序

    1.子类 public class TestClassLife extends TestClassLifeSuper { public TestClassLife() {System.out.prin ...

  8. java子类代码块_java中父类子类静态代码块、构造代码块执行顺序

    父类静态(代码块,变量赋值二者按顺序执行) 子类静态 父类构造代码块 父类构造方法 子类构造代码块 子类构造方法 普通方法在实列调用的时候执行,肯定位于上面之后了 //父类A public class ...

  9. 面试官:Java中线程是按什么顺序执行的?

    本文分享自华为云社区<[高并发系列]Java中线程到底是按什么顺序执行的?你了解的可能是错误的!>,原文作者:冰 河 . Java中线程的执行顺序可能与你想的不一样!一文解密多线程的执行顺 ...

  10. Spring面试之不同版本AOP执行顺序详解

    1.AOP常用注解: @Before 前置通知:目标方法之前执行 @After 后置通知:目标方法之后执行(始终执行) @AfterReturning 返回后通知:执行方法结束前执行(异常不执行) @ ...

最新文章

  1. python桌面快捷图标_python 创建桌面快捷方式 | 学步园
  2. c++11-Variadic Templates
  3. neo4j python 算法_图论与图学习(二):图算法
  4. python创建数据库表_Python 操作数据库(1)SQL基础
  5. 2.写给设计师看的HTMLCSS入门指导
  6. 【转】一分钟读懂互联网广告竞价策略GFP+GSP+VCG
  7. 云计算介绍-1.2,IaaS\PaaS\SaaS比较
  8. 20154319 实验七 网络诈骗技术防范
  9. linux 分区顺序 boot,关于Liunx下的硬盘分区问题(/boot分区)?
  10. 软件项目管理案例教程韩万江课后习题答案第四版
  11. 系分 01 企业信息化战略与实施
  12. Linux输入密码后一直在登陆界面循环
  13. Android 自定义控件浅谈
  14. python搭建微信小程序卖货要收费用吗_开发一个微信小程序需要多少钱?
  15. 云服务器aip,云服务器API接口-云服务器的使用
  16. Labview文字识别-从训练到识别
  17. 编译内核时出现bad register name `%dil'错误
  18. linux nvcc未找到命令,NVCC CUDA编译流程
  19. 时间序列分析——基于R语言案例数据课后数据
  20. 南理工计算机学院老师联系电话,於东军(计算机科学与技术学院)老师 - 南京理工大学 - 院校大全...

热门文章

  1. 1、最小二乘回归、Lasso、岭回归
  2. pandas统计样本分位数
  3. sklearn常用聚类算法模型【KMeans、DBSCAN】实践
  4. 计算机网络 五层网络协议各司其职,一次讲清楚
  5. 上传2008文件服务器慢,为什么在Windows 2008 R2服务器上复制到本地UNC路径的速度如此慢?...
  6. 南昌大学计算机网络通信用什么书,南昌大学_计算机网络教材.doc
  7. 内网服务器putty到天翼云,SSH隧道管理内部服务(putty,ssh secure shell)for win
  8. 双一流2020年调整时间_“双一流”调整名单预测,985大学两升一降,两校退出名校阵营...
  9. java MAVEN下载的代码仓库位置 mac
  10. IDEA java 运行程序 指定运行参数