基本数据类型、局部变量、String类型的直接赋值都是存放在栈内存中的,用完就消失。new创建的实例化对象、String类型的构造方法new出来的对象及数组,是存放在堆内存中的,用完之后靠垃圾回收机制不定期自动消除。栈内存特点,数据一执行完毕,变量会立即释放,节约内存空间;并且必须初始化变量的值。地址是栈,就是静态绑定机制,执行完值不变化。按值调用表示方法接收的是调用者提供的值,而按引用调用表示方法接收的是调用者提供的变量地址。它用来描述各种程序设计语言中方法参数传递方式。Java程序设计语言总是采用按值调用。也就是说,方法得到的是所有参数值的一个拷贝,也就是说,方法不能修改传递给它的任何参数变量的内容。

浅谈从Java中的栈和堆,进而衍生到值传递

浅谈从Java中的栈和堆,进而衍生到值传递

浅谈从Java中的栈和堆,进而衍生到值传递

浅谈从Java中的栈和堆,进而衍生到值传递

浅谈从Java中的栈和堆,进而衍生到值传递

浅谈从Java中的栈和堆,进而衍生到值传递

浅谈从Java中的栈和堆,进而衍生到值传递