Java类变量和成员变量初始化过程
上一篇 / 下一篇 2012-04-12 11:18:40 / 个人分类:Java
一、类的初始化51Testing软件测试网vA_/an
IX|:I7m0 对于类的初始化:类的初始化一般只初始化一次,类的初始化主要是初始化静态成员变量。51Testing软件测试网9N,vrsy-w{)K` r,J
51Testing软件测试网Q-b0O@1c)]]}9l类的编译决定了类的初始化过程。51Testing软件测试网L$E$g&r[i,YH!L9sB
(~mN8i8SA&D%^`0 编译器生成的class文件主要对定义在源文件中的类进行了如下的更改:51Testing软件测试网-bCuf5o-I4Lm
o9kE+p9cn kR7N0 1)先按照静态成员变量的定义顺序在类内部声明成员变量。51Testing软件测试网w j/Kl9]g3{
51Testing软件测试网 FD/X:U4]2)再按照原java类中对成员变量的初始化顺序进行初始化。
Q5Nq3~C*U051Testing软件测试网@0U mXnW5}#DY o一个java类和编译后的class对应的转换如下:51Testing软件测试网(],f @%RmV.R
+J|g!dSL;{%R(Rn0 源文件:
v6}(w yO ]D.] khR051Testing软件测试网 v6{0^J?aTg51Testing软件测试网"\2J/L`/J.Y6i9e
|
51Testing软件测试网OxBvStO\}
51Testing软件测试网7_ B&I7Ufq}r当java源代码转换成一个class文件后,其转换成类似下面的代码:51Testing软件测试网%i'p&tlgz:}#UO[
/wou5P }5w L0
j+~4]FLh0
|
6SPyruah5L051Testing软件测试网3\!gZ*_ZAW2K)IqO
|Q'WWAJ \0 初始化顺序依据转换后对应的class类成员变量的初始化顺序依次执行,所以所有的静态成员变量都是先声明,后执行赋值的,而且赋值的顺序也是依照源代码对静态成员变量初始化的顺序进行的,注意:定义一个成员变量并直接初始化与在静态代码块中进行初始化是等价的,都是依据它们在源代码中定义的顺序进行的。
$m6?l9{SkI},u ~8\0对于对象的生成其初始化过程与类的初始化过程类似,但会增加构造函数阶段,源代码如下:
&v