public class PersonD {
private String name;
private int age;
private static String country="cn";
PersonD(){}
PersonD (String name,int age){
this.name=name;
this.age=age;
}
public void setName(String name) {
this.name = name;
}
public void speak(){
System.out.println(this.name+"..."+this.age);
}
public static void showCountry(){
System.out.println("country"+country);
}
//***********************************************
public class PersonDTest {
public static void main(String[] args) {
PersonD p=new PersonD("張三",20);
p.setName("李四");
}
/*PersonD p=new PersonD("張三",20);
* 該句話都做了什麼事情(沒涉及共享區)
* 1.因為new用到了PersonD.class,是以會會先找到PersonD.class并加載到記憶體中
* 2.執行該類中的static代碼塊,如果有的話,給PersonD.class類進行初始化
* 3.在堆記憶體中開辟空間,配置設定記憶體位址,
* 4.在堆記憶體中建立對象的特有屬性,并進行預設初始化
* 5.對屬性進行顯示初始化
* 6.對對象進行構造代碼塊初始化
* 7.對對象進行對應的構造函數初始化
* 8.将記憶體位址賦給棧記憶體中的p變量
*
*/
}