Android-Java-引用數據類型參數傳遞內存圖

首先看一個案例:

package android.java.oop04; class Person { public String name; public void showName() { System.out.println("名字是:" + name); } } /** * 引用類型參數傳遞 */
public class OopDemo01 { public static void main(String[] args) { Person p = new Person(); p.name = "連城劍法"; myMethod(p); p.showName(); // 打印name值
 } static void myMethod(Person p) { p.name = "神照經"; } }

執行結果:java

      名字是:神照經android

 


 

 

 

根據以上代碼,分析而後在內存中開闢分配處理原理:

 

1.main方法被 JVM 準備執行,而後main被JVM執行,而後main就在棧內存中壓棧;

2.在棧內存中 new Person(); , 這個 new Person(); 將會在堆內存中開闢控件構建對象 Person對象 分配內存地址089#f;oop

3.在棧內存中 Person p = 引用的地址是:89#f,意思就是 棧內存中的 p指向了 ----> 堆內存中的Person對象,根據惟一的內存地址89#f指定

4.在棧內存中 p.name="連城劍法" 是經過對象引用地址89#f,去修改堆中Person對象的name屬性的值 爲」連城劍法「spa

5.在棧內存中 調用myMethod(p)方法,此時myMethod方法會壓棧/進棧;

6.在棧內存中 myMethod(Person p)方法中的參數p,此時的對象內存地址是89#f,和main方法的p對象地址同樣;

7.在棧內存中 myMethod(Person p)方法中的參數p,p.name = "神照經" 是經過對象內存地址89#f 去修改--->堆內存中Person對象的name成員變量 爲"神照經"code

相關文章
相關標籤/搜索