代碼:函數
public class StaticDemo9 { public static void main(String[] args) { Woman w = new Woman("Kelly", 20); } } class Woman { private String name; private int age; private static String country = "CN"; public Woman(String name, int age) { this.name = name; this.age = age; } { System.out.println(name + "...." + age); } public void setName(String name) { this.name = name; } public void speak() { System.out.println(name + "...." + age); } public void showCountry() { System.out.println("country" + country); } }
Woman w = new Woman("Kelly", 20);this
這段代碼的在內存中的執行過程以下:spa
一、由於new用到了Woman.class,因此會先找到Woman.class類文件加載進堆內存。code
二、static靜態代碼塊執行,若是有的話,給Woman.class類進行初始化。對象
三、在堆內存中開闢空間,分配內存地址。blog
四、在堆內存中創建對象的特有屬性,完成默認初始化。內存
五、對特有屬性顯式初始化class
六、執行構造代碼塊變量
七、與之對應的構造函數初始化構造函數
八、將內存地址值賦給內存中的w變量