1. 程式人生 > >記憶體解析

記憶體解析

記憶體區域:
在這裡插入圖片描述

程式執行過程
基本資料型別重新賦值:
開闢一個新空間來儲存新的值,將原先的指標刪除,將變數指向新值,程式執行結束時原先的值被回收;
引用資料型別:
例:Birth d = new Birth(1,2,2014);
棧空間先分配一個變數d,d是例項。堆空間存放new出來的Birth型別物件。變數指向物件的地址;修改一個變數所指向的物件,那麼指向相同的其他變數也會改變。
棧中的資料和堆中的資料銷燬並不是同步的。方法一旦結束,棧中的區域性變數立即銷燬,但是堆中物件不一定銷燬。因為可能有其他變數也指向了這個物件,直到棧中沒有變數指向堆中的物件時,它才銷燬,而且還不是馬上銷燬,要等垃圾回收掃描時才可以被銷燬。

常量池技術:
整型資料,記憶體中有-128 ~ 127。
String型別,記憶體中已經有的時候直接可以用,沒有時new出來
和equals的區別:
== 是比較記憶體地址是否相等,equals比較的是值是否相同
Object的equals方法與“
”相同。而大多數java類中都重寫了equals方法,達到比較屬性值的目的。