詳細見http://blog.csdn.net/shijinupc/article/details/7692315
幾大原則 * 一、靜態成員變量(Static) * 1、靜態成員變量為類變量,所有對象共享同一內存空間 * 2、靜態成員變量的聲明和定義僅在首次加載類時執行一次 * 3、首次加載類時首先對所有靜態成員變量根據類型默認賦初值,然后再對有右值的附右值 * 二、靜態初始塊 * 1、靜態初始化塊僅在首次加載類時執行一次 * ······多個靜態成員變量與靜態始化快參照出現順序先后執行······ * 三、動態成員變量 * 1、動態成員變量定義在每次實例化對象時在構造函數之前執行 * 四、動態初始化塊 * 1、動態初始化塊在每次實例化對象時在構造函數之前執行 * ······多個動態成員變量與動態初始化塊參照出現順序先后執行······ * 總結:總的來說,在不涉及繼承的前提下,當首次加載類時,按照如下順序執行 * 1、按照出現順序先后執行靜態成員變量定義與靜態初始化塊 * 2、按照出現順序先后執行動態成員變量定義與動態初始化塊 * 3、執行構造函數 * 再次實例化對象時只執行第2、3步即可 * * ············成員變量與定義與初始化塊先于構造函數執行········· * 五、當涉及到繼承時,按照如下順序執行 * 1、執行父類的靜態成員變量定義與靜態初始化塊,執行子類的靜態成員變量定義與靜態初始化塊 * 2、執行父類的非靜態成員變量定義與動態初始化塊,執行父類構造方法 * 3、執行子類的非靜態成員變量定義與動態初始化塊,執行子類構造方法 * 另:父類構造方法中用到的方法如果已被子類重寫,那么在構造子類對象時在調用父類構造函數中使用子類重寫的方法新聞熱點
疑難解答