Java中创建的局部变量等是存放在栈区的,而数组是存放在堆区的,那些new出来的对象也大多存放于堆区。
栈区的空间往往不大,而堆区空间就会大很多。
这里我们创建一个数组,如果在idea中打印a,会得到一串符号,这个是数组在堆区首元素的地址。[ 代表的是数组,I 代表的是int形数据。
如果这时我们再创建一个新数组 a2,并将a赋值a2,会出现什么情况呢?
int[] a = new int[]{1, 2, 3, 4, 5, 6, 7};
int[] a2 = a;
System.out.println(a2);
System.out.println(a);
这实际是把a的地址赋值给了a2,这时如果我们改变a2数组中的一个值,a数组也会跟着改变吗,答案是会的,因为a2只是有了a数组的地址,它还是要通过这个地址到堆区找到相应的元素,然后改变。(这里如果学习过C语言指针的话会比较好理解)