一、定义
int[][] arr = new int [2][4]
2行4列的数组
二、内存中的存放
栈中:arr存放一个指针,这个指针指向的是一个一维数组,包含元素为arr[0]、arr[1]、arr[2];以上三个元素分别指向堆中的三个不同位置,这个才是保存具体数据值的地方。即堆中堆为二位数组的存放并不是一个方表的形式,而是行数加1个表。
eg:以上定义中,打印arr,输出为二维数组在堆中的位置值,打印arr[0]、arr[1]、arr[2]、分别为每一行的首个元素的位置值。打印arr[0][0]等,打印的是元素。
但如下定义中:
int[][] arr = new int[3][]
打印arr[0],为null,因为arr[0]未初始化,并未指向一个具体的数组;打印arr.length,为3,即行数;打印arr[0].length ,为二维数组中第一个数组的长度。
三、初始化
int[][] arr = {{1,2,3},{2,3,1},{3,2,1}}
本文详细解析了Java中二维数组的定义、内存分配机制及初始化过程,包括数组在栈和堆中的存放方式,以及不同初始化情况下的表现。帮助读者深入理解Java二维数组的底层实现。

324

被折叠的 条评论
为什么被折叠?



