本博客旨在深刻了解类变量的初始化,若是有分析错误的地方,但愿获得各位大牛的指正.java
类的成员变量分为两种: 普通成员变量 和 静态成员变量 spa
类的成员变量初始化地点有三处:code
让咱们来看下面的一段代码:对象
CommonMemberVariableTest.java:blog
public class CommonMemberVariableTest { public static void main(String ...agrs) { CommonMemberVariable commonMemberVariable = new CommonMemberVariable(); } } class ParentCommonMemberVariable { private Variable1 parentVariable1 = new Variable1("parent v1 statement"); private Variable1 parentVariable2 = new Variable1("parent v2 statement"); private static Variable1 parentStaticVariable1 = new Variable1("static parent v1 statement"); private static Variable1 parentStaticVariable2 = new Variable1("static parent v2 statement"); { parentVariable1 = new Variable1("parent v1 code block"); } static { parentStaticVariable1 = new Variable1("static parent v1 code block"); } public ParentCommonMemberVariable() { parentVariable1 = new Variable1("parent v1 constructor"); } } class CommonMemberVariable extends ParentCommonMemberVariable { private Variable1 variable1 = new Variable1("v1 statement"); private Variable1 variable2 = new Variable1("v2 statement"); private static Variable1 staticVariable1 = new Variable1("static v1 statement"); private static Variable1 staticVariable2 = new Variable1("static v2 statement"); { variable1 = new Variable1("v1 code block"); } static { staticVariable1 = new Variable1("static v1 code block"); } public CommonMemberVariable() { variable1 = new Variable1("v1 constructor"); } } class Variable1 { public Variable1(String info) { System.out.println(info); }
上面代码的执行结果以下:继承
static parent v1 statement
static parent v2 statement
static parent v1 code block
static v1 statement
static v2 statement
static v1 code block
parent v1 statement
parent v2 statement
parent v1 code block
parent v1 constructor
v1 statement
v2 statement
v1 code block
v1 constructor 内存
结论:博客