Java中關於堆和棧的描述:

描述的不一定正確,歡迎指正!!

Java基本數據類型都是以值的形式儲存在棧中,而引用數據類型則是以引用的形式存在棧中,在棧中在指向堆中引用對象。

關於棧和堆的實例一(基本數據類型):

int a =1;

int b = a;

int b = b+1;

Java 在棧中的儲存的關係順序:

第一步:在棧中開闢一個空間,是int 類型的,取名爲a,並且賦值給1;

第二步:在棧中開闢一個空間,是int 類型的,取名爲b,並且把 a 的值賦值給 b ;【也就是說 a 的值賦值給了 b ,此時 b 的值也是 a ,a = 1】

第三步:在棧中進行運算,b+1 的值賦值給 b ,根據上一步 b 的值爲 1 ;第一步 得到 a 的值爲 1 ;所以 b+1 的的值就是 2 ,重新賦值給 b 就是 b改變了原來(由 1 → 2 )。

關於棧和堆的實例二(引用類型):

Student student = new Student();

student.name = "劉廣法";

Student studentTwo =student;

Java 在棧中的儲存的關係順序:

第一步:在棧中開闢一個空間,命名爲student ,並且 student 指向堆中的對象 new Student();

第二步:給student 中的變量 命名爲:“劉廣法”;

第三步:在棧中開闢一個空間,命名爲studentTwo ,並且把 student 對象賦值給 studentTwo 。

也就是說此時的 studentTwo 中變量的名字也是“劉廣法”。

如果此時,進行變量修改,

studentTwo.name = "劉廣法博客";

那麼結果就是student 的名字也是修改成了“劉廣法博客”

舉報/反饋
相關文章