JAVA中代码的加载顺序
来源:互联网 发布:剑三成男绯梨数据 编辑:程序博客网 时间:2024/06/05 02:28
JAVA中代码的加载顺序所能了解的知识点
- 类的依赖关系
- static代码块的加载时间
- 继承类中构造器的隐式调用
- 非static的成员变量初始化时间
- main方法和static的加载顺序
测试代码如下:
public class App { private static App d = new App(); private SubClass t = new SubClass(); static{ System.out.println("App static");//6 } public App(){ System.out.println("构建App");//5 } public static void main(String[] args) { System.out.println("App main");//7 }}//父类class SuperClass{ static{ System.out.println("SuperClass static");//1 } SuperClass(){ System.out.println("构建SuperClass");//3 }}//子类class SubClass extends SuperClass{ static{ System.out.println("SubClass static");//2 } public SubClass(){ //super() System.out.println("构建SubClass");//4 }}
输出结果
SuperClass staticSubClass static构建SuperClass构建SubClass构建AppApp staticApp main
分析
- 因为在App类中,声明了SubClass的变量,所以JVM先加载SubClass类,不然无法编译App。
- SubClass是SuperClass的子类,在继承关系的类中,父类先加载进JVM,不然子类无法编译。
- 在类中static代码会在字节码文件加载进JVM的时候调用一次,且在该类的生命周期中只会调用一次。所以在第一行输出的是SuperClass static,随后SubClass加载进了JVM,输出第二行的SubClass static
- 声明的static成员变量,其初始化是在static代码块中。非static成员变量,其初始化是在构造器中,且是在构造器的代码前面。
- 创建静态的成员变量d之前会先创建成员变量t,在SubClass的构造器中会隐式的使用super()调父类的构造器,所以第三行输出构建SuperClass,第四行输出SubClass。
- 在App的构造器中创建好了成员变量t后,向下执行,输出第五行的构建App。
- 随后继续执行App的静态代码块(因为d是static的变量,所以并不是说App的构造器比static先执行),输出第六行的App static。
- 最后执行public类的入口方法main,输出第七行的App main。
0 0
- Java类中代码的加载顺序
- JAVA中代码的加载顺序
- java类中代码加载的顺序
- java中static修饰符的代码的加载顺序
- java中各种代码块的加载顺序
- Java中类代码加载的顺序详解
- java类中代码加载顺序
- java 代码加载顺序
- JAVA中代码顺序,静态块 静态变量,加载顺序!
- JAVA中静态代码块,构造代码块,构造函数的加载顺序
- Java中代码块,静态代码块和构造函数的加载顺序
- java中静态代码块、代码块、构造方法的加载顺序
- java 中类的加载顺序
- Java中,类的加载顺序
- java 中类的加载顺序
- java 中类的加载顺序
- java 中类的加载顺序
- java中类的加载顺序
- 【Android测试】AndroidStudio通过UIAutomator进行测试
- Ubuntu16.04环境配置记录(三)
- 机器学习 K-近邻算法(一)
- Fatal error: Call-time pass-by-reference has been removed in
- MAC上postman离线安装时提示加载扩展程序出错怎么办?
- JAVA中代码的加载顺序
- Windows上C++使用WM_COPYDATA函数进行进程间通讯
- 每日F&Q(2017.4.19)
- 搭建ARM调试环境
- maven tomcat插件的配置与使用
- 深度解读:这个家伙何以改变世界?
- 过目不忘JS正则表达式
- compareTo和equals
- CSDN如何转载别人的文章