Java中的栈区和堆区问题(关于数组)

2023-11-12

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语言指针的话会比较好理解)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中的栈区和堆区问题(关于数组) 的相关文章

随机推荐