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

相关文章
相关标签/搜索