java 数组的内存分配
每一个软件都占用一定的内存空间。
栈与堆
java 内存分配
int变量例子
int等类型的变量无new关键字,不在堆中开辟空间,值直接在栈中赋给变量名。
数组的内存
数组的初始化则涉及到在堆内存中开辟新的空间(静态初始化的简写,eg:int[] array = {1,2,3},是省略了new int[]的,因此静态初始化也涉及开辟新的空间)。因此实际传递给变量名的实际上是在堆内存中的地址,而非是直接的数值。
在堆中新建的不同的数组互相独立。
但实际上,也存在两个数组指向同一个空间的内存图。
没有通过索引赋值,而是直接将arr1中记录的地址传递给了arr2,那么两个array指向的就是同一个堆中的空间。此时其中一个数组对内存中的值做了更新,那么通过另一个变量名进行访问的时候,得到的也是更新了的值。