1.基本数据类型定义的本质:先变量初始化,然后在栈内存中开辟空间去存放赋给变量的值
int n1=10;
int n2=n1;
n2=80;
输出结果:n1=10
n2=80
分析:将值80赋给n2并不会影响n1的初始化值
结论:基本数据类型赋值存储在栈内存中,其之间的赋值是值传递(值拷贝)
2.引用数据类型(数组)定义的本质:先定义一个数组,然后在JVM栈内存中分配一个地址值,再在堆内存中根据所定义的数组长度开辟相应的空间,地址值直接指向堆内存中所开辟的空间,每次值的改变都是通过调用地址值去改变所开辟的对应堆内存空间中存储的元素的值。
int arr1[ ]={1,2,3};
//两个数组共用一个地址值,改变其中任何一个数组中的元素的值,另一个数组中的对应的元素值也会发生改变
int arr2[ ]=arr1;
arr2[0]=10;
输出结果:arr1[ ]={10,2,3}
分析:将值10赋给arr2就相当于直接赋给arr1的第一个元素,也就是改变元素arr1[0]的值为10
结论:引用数据类型(数组)赋值存储在堆内存中,其之间的赋值是地址值传递(引用传递)