初始化和类装载
在很多传统语言里,措施都是作为启动进程的一部门一次性载入的。随后举办的是初始化,再是正式执行措施。在这些语言中,必需对初始化进程举办慎重的节制,担保static数据的初始化不会带来贫苦。好比在一个static数据得到初始化之前,就有另一个static数据但愿它是一个有效值,那么在C++中就会造成问题。
Java则没有这样的问题,因为它回收了差异的装载要领。由于Java中的一切对象都是工具,所以很多勾当变得越发简朴,这个问题即是个中的一例。正如下一章会讲到的那样,每个工具的代码都存在于独立的文件中。除非真的需要代码,不然谁人文件是不会载入的。凡是,我们可认为除非谁人类的一个工具结构完毕,不然代码不会真的载入。由于static要领存在一些细微的歧义,所以也能认为“类代码在首次利用的时候载入”。
首次利用的处所也是static初始化产生的处所。装载的时候,所有static工具和static代码块城市凭据原来的顺序初始化(亦即它们在类界说代码里写入的顺序)。虽然,static数据只会初始化一次。