Stack & Heap
[instance variable]
宣告在class內而不是method內,是每個物件自己的值,他存活在其所屬的物件中
[local variable]
被宣告在method中,生命長度只在method被叫出來到執行完畢這段而已
[Heap]
物件本身都是存活在有垃圾回收的heap上
[Stack]
method叫用存的地方及變數置放的空間
[附註]
->當我有非primitive variable的變數他參考到某個object時,並不違反先前所說的,也就是說,如果local variable參考到某object,則變數會放在stack上,而物件會存在heap上
->當我要存的instance variable是primitive的話,Java是依據primitive的type去保存下他所需要的空間,而當我的object裡面有一個參考變數,是參考別的object的話,heap並不會留別的object的空間給他,而是只留下參考變數的空間,ex.
private Human yap;
直到我new那個object的時候才會在heap上存放空間給那個object,ex.
private Human yap = new Human();