New一個對象發生了什麼?
1.把class文件加載到方法區中,
2.堆中分配對象內存,棧中分配引用內存
3.方法區中實例變量複製一份到堆中
4.實例對象從方法區中調用構造方法進行初始化堆中對象
例如:new Person() 發生了什麼
1. 加載Person.class文件到方法區,同時加載Person類中的static屬性
2. 在main方法所在的棧區分配引用(reference) p;
3. 在java堆中開闢空間存放Person類,但是不進行初始化操作。
4. 默認初始化數據
5. 將引用p指向java中新開闢的Person類
其他:靜態變量是存在於方法區的,但操作對象的指向還是堆中的實體對象,
可以理解爲方法區是一個簡易模板模型