java成长笔记

数组在内存中的加载过程

2019-07-23  本文已影响0人  G_uest

一维数组

array1.jpg
int[] arr1 = new int[3];

先把 arr1 压进栈,然后在堆空间中开辟一个空间,并把值初始化为0(arr1为引用变量,但是内部数据是int类型,默认值为 0,具体请参照局部变量与成员变量),最后把 开辟的堆空间地址 赋值给arr1

int[] arr2 = arr1;

把 arr1 中的 地址 赋值给 arr2,此时 arr2 和 arr1 指向同一块空间。

arr2[0] = 20;

此时,arr1[0] 值为 20。

二维数组

array2.jpg
int[][] array = new int[3][];

这条语句会先把 array 压栈,然后在堆中开辟一个空间,初始值为 null(array为引用变量,第一维同样是引用类型,具体请参照局部变量与成员变量),最后把开辟的堆空间地址赋值给 array。

array[0][] = new int[1]

这条语句会在堆空间中开辟一个 只有一个 int 类型大小的空间,并初始化为 0 ,然后把自己的地址赋值给array[0][]。

array[1][] = new int[2];
array[2][] = new int[3];

这两条语句和上一条意义一样,就不再做解释

上一篇 下一篇

猜你喜欢

热点阅读