Java类的执行顺序
在Java中一个类包括:构造块、构造方法、静态块、main方法、普通方法。
通过下面的例子将看出一个类中各种方法的执行顺序:
1 /** 2 * @author zhengbinMac 3 */ 4 public class Test2 { 5 static { 6 System.out.println("静态块"); 7 } 8 public Test2() { 9 System.out.println("构造方法"); 10 } 11 { 12 System.out.println("构造块"); 13 } 14 public void ok() { 15 System.out.println("OK()"); 16 } 17 public static void main(String[] args) { 18 System.out.println("main()"); 19 Test2 t2 = new Test2(); 20 System.out.println("new Test2"); 21 t2.ok(); 22 } 23 } 24 /* 25 静态块 26 main() 27 构造块 28 构造方法 29 new Test2 30 OK() 31 */
可以得出:首先JVM加载这个类(执行静态块)-》执行类的入口main方法-》构造块-》构造方法-》执行调用方法
如果有父类呢?JVM首先会检查当前类的父类是否加载,若没有则加载其父类,然后再加载自己,通过下面的测试说明:
1 /** 2 * @author zhengbinMac 3 */ 4 public class Son extends father { 5 { 6 System.out.println("Son-构造块"); 7 } 8 static { 9 System.out.println("Son-静态块"); 10 } 11 public Son() { 12 System.out.println("Son-构造方法"); 13 } 14 15 @Override 16 public void t1() { 17 System.out.println("Son()"); 18 } 19 public static void main(String[] args) { 20 System.out.println("main()"); 21 Son t = new Son(); 22 t.t1(); 23 } 24 } 25 26 class father { 27 { 28 System.out.println("Father-构造块"); 29 } 30 31 static { 32 System.out.println("Father-静态块"); 33 } 34 35 public father() { 36 System.out.println("Father-构造方法"); 37 } 38 39 public void t1() { 40 System.out.println("Father()"); 41 } 42 }
// 输出 /* Father-静态块 Son-静态块 main() Father-构造块 Father-构造方法 Son-构造块 Son-构造方法 Son() */
其中静态块,用static关键字声明,JVM加载类时执行,仅执行一次。
其中构造块,类中直接用{}声明,在每次创建对象时执行。
注意,静态块会按照声明的顺序执行。如下面这两个例子:
转载于:https://www.cnblogs.com/zhengbin/p/5671163.html
Java类的执行顺序相关推荐
- java 类的执行顺序_Java中类的执行顺序
讲解在代码中: package 类执行顺序; /** * java类执行顺序 * * 1.如果父类有静态成员赋值或者静态初始化块,执行静态成员赋值和静态初始化块 * 2.如果类有静态成员赋值或者静态初 ...
- 详解Java类对象执行顺序
之前了解过static属于类加载顺序优先于对象,成员变量初始化优先于构造方法等等,都是零散的,今天抽出时间系统的总结了一下Java相关加载顺序(大佬请绕开^_^).与君共勉!! 借鉴了@ATJAVA ...
- java 类的执行顺序_java类加载的顺序
类加载的顺序: 1.加载静态成员/代码块: 先递归地加载父类的静态成员/代码块(Object的最先):再依次加载到本类的静态成员. 同一个类里的静态成员/代码块,按写代码的顺序加载. 如果其间调用静态 ...
- java类初始化顺序_「漫画」Java中的父子类的执行顺序到底是怎么一回事?
----下课后---- 结论 类的加载顺序. (1) 父类静态代码块(包括静态初始化块,静态属性,但不包括静态方法) (2) 子类静态代码块(包括静态初始化块,静态属性,但不包括静态方法 ) (3) ...
- java类的运行顺序_Java语言类的基本运行顺序
本文主要向大家介绍了Java语言类的基本运行顺序,通过具体的代码向大家展示,希望对大家学习Java语言有所帮助.我们以下面的类来说明一个基本的 Java 类的运行顺序:1. public class ...
- java类成员初始化_简单了解Java类成员初始化顺序
这篇文章主要介绍了简单了解Java类成员初始化顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 类中包含7中成员: 1.静态变量 static 2 ...
- 类继承和初始化类的执行顺序
初始化类的执行顺序:子类初始化->->子类构造方法->父类->构造方法->属性->构造方法中内容->构造方法下面的内容->子类属性->子类构造方法 ...
- java 构造函数的执行顺序
在此我用类似<Thinking in Java>的一个例子来说明 pakage com.yqs.test class Milk { publcic Milk() { System.out. ...
- java注解的执行顺序_深入理解Spring的@Order注解和Ordered接口
前言 Spring的@Order注解或者Ordered接口大家都知道是控制顺序的,那么它们到底是控制什么顺序的?是控制Bean的注入顺序,还是Bean的实例化顺序,还是Bean的执行顺序呢?那么我们先 ...
最新文章
- Pandas数据规整
- python 简化连锁比较 pycharm提示Simplify chained comparison
- 全球及中国建筑农业及矿业电动车辆行业营销模式与需求规模预测报告2022版
- Siverlight5新功能/改进总结
- GZip、Deflate压缩算法对应的C#压缩解压函数
- STM32Cubemx出现工程突然自动退出的问题
- gdb官方说明文档中文版
- 通过Git WebHooks+脚本实现自动更新发布代码之Shell脚本(二)
- 算法:动态规划 最大连续子数组和 Maximum Subarray
- 数据处理中的过采样、下采样、联合采样和集成采样
- android知识点(好)
- Netty03 进阶
- JavaScript对象的取值
- 抗肿瘤靶向药物丨小分子化合物 or 单克隆抗体?- MedChemExpress
- CAD版本怎么转换?试试这种方法
- 小米汽车设计图纸泄露,官方称非最终文件;微软裁员遣散费高达8亿美元,人均获赔54万元;苹果暂停自研Wi-Fi芯片|极客头条...
- 关于电脑电流滋滋声解决方法
- 遵化市10余个局委办一把手调研九次方大数据,详细部署数字遵化建设
- setting文件配置
- 固定资产管理系统提升企业固定资产管理效率