新建一個對象初始化執行順序

/**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();

}

}

相關文章
相關標籤/搜索