本博客旨在深刻了解類變量的初始化,若是有分析錯誤的地方,但願獲得各位大牛的指正.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 內存
結論:博客