节:类的加载过程之三:Initialization

Posted 李阿昀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了节:类的加载过程之三:Initialization相关的知识,希望对你有一定的参考价值。

介绍完类的加载过程的第二个阶段(即链接阶段)以后,我们再来看一下类的加载过程的第三个阶段,即Inilization阶段,翻译过来便是初始化阶段。

接下来,我就要来给大家讲讲在初始化阶段大家都需要知道些什么内容了。

首先,大家需要知道的一点是初始化阶段就是执行类构造器方法(即<clinit>())的过程

这里初次提到了一个类构造器方法(即<clinit>()),关于它,大家之前可能没有听说过,没听说过也没关系啊,大家只要知道它不等同于类的构造器就行,它俩不是一回事,注意,类的构造器就是虚拟机视角下的<init>()

然后,大家需要知道的一点就是此方法不需定义,它是javac编译器自动收集类中的所有类变量的赋值动作和静态代码块中的语句合并而来的

也就是说,<clinit>()方法已经被提前定义好了,根本就不需要我们来定义,你有见过我们在使用Java类的时候,定义过这样的方法吗?没有吧!是不是?

知道类构造器方法(即<clinit>())是怎样生成的之后,接下来我便要通过一个例子的演示来让大家对它有一个比较直观的印象了。

例如,现有如下这样一个程序,运行以下程序,结果是什么,想必大家已经很清楚了,我也就不再赘述了。

以上是关于节:类的加载过程之三:Initialization的主要内容,如果未能解决你的问题,请参考以下文章

节:类的加载过程之一:Loading

节:类的加载过程之一:Loading

节:类的加载过程之二:Linking

JVM之类加载过程

节:类的加载过程之二:Linking

节:概述类的加载器及类加载过程