1. 基本数据类型和引用数据类型的存储
Java是在堆栈中存放数据的。
1.1 存储基本数据类型
当存储基本数据类型时,如:int a=3,会先在栈内存中查找3是否存在,若不存在,则在栈内存中开辟两处空间分别存放值 3 和他的引用 a,若存在,则在栈内存中开辟空间存放 a 并引用已存在在栈内存中的值 3。
1.2 存储引用数据类型
当存储引用数据类型时,会先在堆内存中开辟空间存放引用数据的属性和方法,这个空间会有一个地址值,接着会在栈内存中开辟空间存放引用数据的变量及这个地址值。
2. 值传递和引用传递
2.1 值传递
int a=3;
int b=a;
以上代码会使a对3的引用传递给b,如果a的值改变,就在栈内存中查找并引用改变后的值,而b的值与其引用都不变。
2.2 引用传递
Integer i=new Integer(3);
Integer j=i;
以上代码会把i引用的地址值传递给b,如果i的值改变,实际上改变的是堆内存中的属性或方法,地址值并没有改变,j引用的还是这个地址值中的内容,地址值中的内容改变了,所以j中的值也改变了。