主方法中创建两个类(Test和Ex)main创建Text和Ex类,并分别分配text和ex方法,堆中会开辟两个对象,在Ex类中定义变量,并在main方法中调用ex方法,改变变量值,main方法调用的参数指向堆中的地址,String类型指向方法区中相同的地址,在Ex类中调用text方法,形参传入Ex类定义下的新方法,text方法在栈中会开一个新的分区,简称text栈,由于该方法是Ex类创建的,因此text栈也指向Ex类指向的对象,所以在text方法中修改对象属性,堆中的值也会随之发生改变,如果将text方法中Ex创建的方法置空,则堆中的值不会发生改变,输出结果仍是变量初始值。![]
如果传入的形参在text方法中执行a=new Person;
则又会在堆中开辟一个独立的分区,此时改变变量值不会影响输出。