深入了解java虚拟机---类加载机制----初始化阶段

本文深入解析Java中类的初始化过程,包括准备阶段和初始化阶段的区别,<clinit>()方法的作用及执行顺序,以及接口初始化的独特之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备阶段是给变量赋系统的初始值。而初始化阶段就是给变量赋程序员自己设的值

初始化阶段是<clinit>()方法的执行过程。过程如下

1.编辑器收集所有的赋值动作和静态块合并形成<clinit>方法。收集是按照代码出现的顺序决定的。并且静态初始化块只能访问定义在之前的变量,对于在之后的变量可以赋值,但是不能访问

2.先执行父类的<clinit>方法,再执行本类的<clinit>方法。而且不需要显式调用,虚拟机会保证父类<clinit>方法先执行。虚拟机执行的第一个<clinit>方法是java.lang.object

注:没有赋值操作和静态初始化块的类没有<clinit>方法

 

 

除了类,还有接口。接口可以有赋值.操作。但不同的是不需要先执行父接口的<clinit>方法,只有在用到后才执行(有点像懒加载)

转载于:https://www.cnblogs.com/dailinfu/p/7308950.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值