/**ide
* 函數
Person p = new Person();spa
1,加載Person.class文件。對象
2,執行Person類中的靜態代碼塊對Person類進行初始化。內存
3,在堆內存開闢空間分配內存地址,並對對象中的屬性進行默認初始化和構造代碼塊初始化。it
注:(構造代碼塊的初始化跟對象中的默認屬性是一致的,誰在前,就先實例化誰。)編譯
如:下面則先運行int x=4;class
在運行構造代碼塊,以後再執行int y=5;變量
=======================================構造函數
int x = 4;
{
System.out.println("d");
}
int y=5;
=======================================
4,與之對應的構造函數初始化。
5,將對象的內存地址值賦值給p。
*
*/
public class StaticCode {
int x = 4;
{
// System.out.println("d" + age);//在這裏若是寫上成員變量age,則會編譯失敗,無論age屬性是私有仍是共有。
System.out.println("d");
}
static {
System.out.println("a");
}
private int age=2;
StaticCode(int x) {
System.out.println("g");
}
StaticCode() {
System.out.println("f");
}
void show() {
System.out.println("e");
}
}
class StaticCodeDemo {
static {
System.out.println("b");
}
//此方法執行的輸出的值依次是:b、a、d、f、e、d、g、e
public static void main(String[] args) {
new StaticCode().show();
new StaticCode(4).show();
}
}