基本数据类型 :
以你的图为例:
程序加载时,主函数在栈内存中开辟了一个空间,定义了一个int类型 变量x存在 栈空间中,这是第一句 x=3;
调用函数show()时,show() 进栈,将主函数的值3传给了show中的x ,x=4时,函数中中x的值替换为4,执行结束后,show()就弹栈。
引用数据类型:
程序加载时,主函数在栈内存中同样开辟了一个空间,定义了一个Demo类型的变量,同时 new demo()在右边的堆中 开辟了一个空间,并且获得了一个地址 比如 ox8762 ,d=new demo()时,就将d的引用指向 ox8762地址,d.x等于9时 ,就将堆中的x的值替换成了9,调用show函数的时候 ,主函数的d的地址传给了 show函数中的d。show函数中的d的引用也指向了堆中的 对象。执行到show函数中 ,d.x=4,就将 栈中对象的值变成了 4. |