类加载的最后一个阶段是初始化阶段,初始化阶段从代码层面上看是真正执行 源码 的阶段。
初始化阶段主要是执行类构造方法,并不是由用户编写代码生成,而是编译器在编译源码过程中自动收集类中的类变量和 static 代码块生成,编译器收集的顺序由类变量和static代码块在源文件中定义的顺序决定。
static语句块中的只能访问到在他之前定义的类变量,定义在他之后的类变量,可以对其赋值,但是不能访问。
类的方法不需要显示调用父类的方法,虚拟机会保证在子类的之前,父类的方法已经执行完成。因此在 虚拟机 中第一个被执行的肯定是 Java . lang .Object的方法。
接口的与类的方法也略为不同,接口的不会主动触发父接口的方法,除非该接口有使用到父接口的变量,父接口才会初始化。
虚拟机会保证一个类的在 多线程 的环境下被正确执行,只有一个线程会执行方法,剩余的线程将会被阻塞,当执行线程结束以后,会唤醒其他线程,但被唤醒的线程将不会执行方法。
同一个类加载器下,一个类只会被初始化一次。
本期类加载的初始化阶段就介绍到这,下期我们会讲解前面多次提及过的类加载器,我们下期再见!!!
我是shysh95,希望可以和你专注技术的路上并肩作战,搜索关注微信公众号: Different Java ,更多精彩文章!!!
Contraindicated 1 fluvoxamine will increase the level or effect of ramelteon by affecting hepatic enzyme CYP1A2 metabolism
From increased acne to lack of sleep, the list is huge
OpenData Covid 19 National Center for Advancing Translational Sciences NIH
Dehbashi S, et al
The factor b was given by b Оі 2 Оґ 2 О” Оґ 3 G 2, where Оі is the gyromagnetic constant, Оґ is the duration of the individual gradient pulses, О” is the time separation between the leading edges of the two gradient pulses, and G is the strength of the diffusion field gradient