1.1.1. 类加载顺序:
JVM要使用一个类,就会去内存中方法区找这个类;如果找到了,就直接使用;如果找不到,就去加载类;
1、JVM第一次要使用一个类的时候,去硬盘上找这个类的class文件;
2、JVM找到这个类的class文件后,加载到内存中的方法区;其中,非静态成员变量、构造函数和非静态一般函数都放到非静态区域;静态成员变量、静态函数都放到静态区域;
3、在方法区的静态区域,为类中的静态成员变量分配空间,赋默认值;
4、按照代码书写的顺序,从上往下,给静态成员变量赋值,同时执行静态代码块;
5、类加载完成;
3、4两步,属于类的初始化阶段;
1.1.2. 对象创建过程:
1、JVM执行时遇到new关键字,到堆内存中开辟对象空间;
2、在对象空间中,为类中的非静态成员变量赋默认值;
3、根据new关键字后面的代码,调用相应构造函数进栈执行;
(1) 构造函数进栈后,首先调用父类构造函数执行;
(2) 父类构造函数执行完毕出栈后,开始根据代码书写的顺序,从上往下,给对象空间中的变量赋值,同时执行构造代码块;
(3) 执行构造函数中书写的代码;
4、构造函数执行结束出栈,对象创建完成;
1.1.1. 练习
1、下面的代码编译运行有没有错误?如果没有,运行结果是什么?说明原因。
点击查看视频讲解
1 2 3 4 5 6 7 8 9 |
|
2、下面的代码编译运行有没有错误?如果没有,运行结果是什么?说明原因。
1 2 3 4 5 6 7 8 |
|