二维数组在内存中的存储结构

内存空间分为三块区域,从左至右分别为:栈内存,堆内存,存储区(存常量值)

基本数据类型变量空间开在栈内存中,引用数据类型变量除了在栈内存中新建一个变量空间外,还会在堆内存中new一个空间,用来存具体的值(在栈内存中只存储其地址)

如下图所示二维数组 int[][] array;实际上是定义了一个数组类型的数组。即一个一维数组中存储的不是int或其他基本类型 的值,而是同样的引用类型——数组。array是这个二维数组的变量名。

变量所需空间是开在栈内存中,二位数组array变量空间是在栈内存中(红1标注)的,里面存的是一个一维数组(红二标注)在堆内存中的首地址;(红2)每个一维数组空间中都存了一个小一维数组(红3标注)在堆内存中的首地址。

也就是说,实际上变量 int[][] array和数组int[] 内,其实存的都是地址。只有数组红3中存的才是int数值。

当使用赋值语句array[0][0]=10;array[0][1]=20;时,表示从常量池取来两个常量10和20,分别放进(红3)第一个小数组的两个空间里,替换掉默认的值0.

发布了47 篇原创文章 · 获赞 10 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/monologuezjp/article/details/93138806