类加载顺序

本文解析了一个具体的Java类加载实例,详细解释了类加载的三个阶段:装载、连接和初始化,并通过一个示例程序展示了类成员变量的初始化顺序及执行结果。

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

随着学习Java的深入,有时候难免遇到执行顺序的问题。

如果不能够理解JVM的类加载的顺序,会很难理解Java代码的执行过程。




public class Test{  

private static Test tester=new Test();//step 1  

private static int count1;//step 2  

private static int count2= 4;//step 3  

public Test(){//step 4  

count1++;  

count2++;  

System.out.println(""+ count1+ count2);  

}  

public static Test getTester(){//step 5  

return tester;  

}  

public static void main(String[] args){  

System.out.prinltn("count1 = "+count1);

System.out.println("count2 = "+count2);

}



问执行顺序是怎样的?

问执行结果是怎样的?

答案分别是:

14235

1 1

count1 = 1

count2 = 4


你打对了么?


如果答案不是你想的那样,你该了解一下Java类的加载过程了。

JVM在执行一个java类需要经过 3 步。

1、装载 2、连接 3、初始化

这里不做过多说明,请自行搜索“类加载过程”。

2阶段 连接 做的事情有必要说明一下,它会把装载到内存中的类成员赋予初始值,例如 int 初始值是 0 ,复杂类型 初始值 null等。

所以在执行java代码之前,各成员变量已经有初始值了。

之后进入到 步骤 3 初始化 阶段,这个过程就是顺序执行了。

step 1 调用了 step 4 ,所以 执行过程是 14235,

执行step 4 时 ,会将 count 1 ,2 都自加,然后输出,因为在连接阶段都是 设置成 0 ,所以肯定输出的是 1 1 。

执行过之后,count1 = 1,而 step 3 重新初始化了 count2 = 4;

故当执行main时,输出的是 1 ,4。


如果还有其他不足希望能够补充。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值