天天看點

對象的初始化過程

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變量
  * 
  */
 }