摘要:子类非静态代码块,接着执行子类的构造方法。总之一句话,静态代码块内容先执行,接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法欢迎加入学习交流群,大家一起学习交流。
java 静态代码块 静态方法区别
静态代码块是主动执行的,在项目启动的时候就初始化, 静态方法在类加载的时候 就已经加载 可以用类名直接调用,两者的区别就是:静态代码块是自动执行的;静态方法是被调用的时候才执行的.
代码执行顺序
class Parent { { System.out.println("parent block");//3 } static { System.out.println("parent static block");//1 } public Parent() { System.out.println("parent constructor");//4 } } class Child extends Parent { { System.out.println("child block");//5 } static { System.out.println("child static block");//2 } public Child() { System.out.println("child constructor");//6 } } public class Test{ public static void main(String[] args) { new Child(); } }
输出结果:
parent static block
child static block
parent block
parent constructor
child block
child constructor
对象的初始化顺序:
执行父类静态的内容
执行子类的静态的内容
父类非静态代码块,接着执行父类的构造方法。
子类非静态代码块,接着执行子类的构造方法。
总之一句话,静态代码块内容先执行,接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法
欢迎加入学习交流群569772982,大家一起学习交流。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67713.html
摘要:并发编程的挑战并发编程的目的是为了让程序运行的更快,但是,并不是启动更多的线程就能让程序最大限度的并发执行。的实现原理与应用在多线程并发编程中一直是元老级角色,很多人都会称呼它为重量级锁。 并发编程的挑战 并发编程的目的是为了让程序运行的更快,但是,并不是启动更多的线程就能让程序最大限度的并发执行。如果希望通过多线程执行任务让程序运行的更快,会面临非常多的挑战:(1)上下文切换(2)死...
摘要:下面是该程序在两个内存模型中的执行时序对比图在顺序一致性模型中,所有操作完全按程序的顺序串行执行。不保证未同步程序的执行结果与该程序在顺序一致性模型中的执行结果一致。 前情提要 深入理解Java内存模型(二)——重排序 数据竞争与顺序一致性保证 当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义如下: 在一个线程中写一个变量, 在另一个线程读同一个变量,...
摘要:前提深入理解内存模型程晓明著,该书在以前看过一遍,现在学的东西越多,感觉那块越重要,于是又再细看一遍,于是便有了下面的读书笔记总结。同步同步是指程序用于控制不同线程之间操作发生相对顺序的机制。线程之间的通信由内存模型控制。 showImg(https://segmentfault.com/img/remote/1460000013474312?w=1920&h=1271); 前提 《深...
摘要:前提深入理解内存模型程晓明著,该书在以前看过一遍,现在学的东西越多,感觉那块越重要,于是又再细看一遍,于是便有了下面的读书笔记总结。同步同步是指程序用于控制不同线程之间操作发生相对顺序的机制。线程之间的通信由内存模型控制。 showImg(https://mmbiz.qpic.cn/mmbiz_jpg/1flHOHZw6RtPu3BNx3zps1JhSmPICRw7QgeOmxOfTb...
摘要:并发编程关键字解析解析概览内存模型的相关概念并发编程中的三个概念内存模型深入剖析关键字使用关键字的场景内存模型的相关概念缓存一致性问题。事实上,这个规则是用来保证程序在单线程中执行结果的正确性,但无法保证程序在多线程中执行的正确性。 Java并发编程:volatile关键字解析 1、解析概览 内存模型的相关概念 并发编程中的三个概念 Java内存模型 深入剖析volatile关键字 ...
摘要:前情提要深入理解内存模型一基础编译器运行时会对指令进行重排序。以处理器的猜测执行为例,执行线程的处理器可以提前读取并计算,然后把计算结果临时保存到一个名为重排序缓冲的硬件缓存中。请看下篇深入理解内存模型三顺序一致性 前情提要 深入理解Java内存模型(一)——基础 Java编译器、运行时会对指令进行重排序。这种重排序在单线程和多线程情况下分别有什么影响呢? 数据依赖性 如果两个操...
阅读 3237·2021-11-24 09:38
阅读 2134·2021-11-23 09:51
阅读 1717·2021-10-13 09:39
阅读 2548·2021-09-23 11:53
阅读 1350·2021-09-02 15:40
阅读 3625·2019-08-30 15:54
阅读 1098·2019-08-30 13:04
阅读 2524·2019-08-30 11:01