<返回更多

Java类的加载顺序是怎样的

2024-01-03  今日头条  程序员界的彭于晏
加入收藏

1、虚拟机首次加载类时,会对静态初始块,静态对象,静态方法进行一次初始化。

2、只有调用new方法时才会创建实例。

3、类实例创建过程:首先执行父类初始化块部分,然后是父类的构造方法。然后是子类的初始化快和构造方法。

4、类实例销毁时,先销毁子类部分,在销毁父类部分。

 

 

打印内容:

1
2
3
a
4

实例化对象的过程:

1.检查类是否加载,如果没有加载就加载这个类,要加载所有父类;

懒式加载(按需加载):如果第一次用到加载,只加载一下.通过ClassPath制定的路径寻找类文件(.class) 加载以后是一个对象,类型是class.获得这个类对象:student.class-->class实例

2.在内存堆中分配对象空间.递归分配所有父类和子类属性空间.先父类型再子类型,属性默认自动初始化.自动初始化为"0"值;

3.进行属性的赋值;

4.递归调用父类构造器.(默认调用父类无参构造器);

5.调用本类构造器

JAVA编程思想上是这么描述的:

1、当某个型别为Dog(这里用Dog表示一个类)的对象首次被产生出来,或是当class Dog的static函数或static数据成员首次被访问,java直译器必须查找环境变量classpath所指定的位置,找出Dog.class。

2、一旦Dog.class 被装载,他的所有static动作就会被执行起来。因此他的static初始化动作只会发生一次,就是在class对象首次被装载时。

3、当你new Dog()时,构造过程会先为Dog对象在heap上分配足够的存储空间。

4、这块存储空间会被清为0,并自动将Dog对象内所有隶属基本型别的数据设为缺省值(对数字来说是0),并将references设为null。

5、执行所有出现于数据定义处的初始化动作。

6、执行构造函数。

 

 

控制台输出结果:

this is static method~
0
this is static block
1
this is TestInstanceInit's constructor~

如果有一个变量怎么处理呢:

 

 

控制台输出结果: 静态变量
静态初始化块
变量
初始化块
构造器

关键词:Java类      点击(2)
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多Java类相关>>>