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

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. javascript基础——文字变大变小className的使用及JS浮动的兼容用法
  2. 【Python】KNN简单的判别预测
  3. Java IO知识点
  4. MySQL(二): 表的增删查改
  5. matlab怎么写集合,matlab集合操作
  6. 查看 Proxy 的 $ProxyX.class文件
  7. VMware Linux VDI 安装步骤
  8. Chrome 可移动绿色版
  9. 21天 Jenkins打卡-Day1 环境准备
  10. 使用finalize/dispose 模式提高GC性能(翻译)
  11. 今天加入了OSChina,准备将我的BLOG搬到这里。
  12. 计算机网络系统什么组成,计算机网络系统是由什么组成的
  13. qq空间把android改成iphone,qq空间利用代码修改iPhone6 Plus qq空间修改手机型号教程...
  14. 为什么我停掉孩子所有的兴趣班,也没停掉编程!
  15. 软件设计 基础篇(二) 交互设计
  16. RNA-seq 详细教程:实验设计(2)
  17. Python的字典中动态添加键值对
  18. 【转】地心历险记 2:神秘岛 迅雷 下载 地址|神秘岛 高清 下载地址
  19. 如何将一个逻辑库下所有数据集的名称汇总生成新的数据集BY:crackman
  20. 32位64位Eclipse和jdk对应关系说明【初学者适用】

热门文章

  1. logistic和logitraw
  2. 在jupyter上绘制caffe网络迭代时的损失和精度曲线
  3. Darknet网络模型结构可视化
  4. Python使用numpy模块实现矩阵和列表的连接操作
  5. matlab preparets,请问吧里有大神做过MATLAB时间序列神经网络(NARX)吗?
  6. Kubernetes 云原生 容器类型有哪些
  7. String.valueOf()方法的使用总结
  8. 简单说几个常见的数据结构
  9. 下载centos(阿里云)
  10. 7-7 mmh学长的大数模板 (20分)