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 的名字也是修改成了“劉廣法博客”
舉報/反饋