详解二维数组

二维数组本质上是以数组作为数组元素的数组,即“数组的数组”。

例如
int arr[3][4],
定义arr为3*4(3行4列)的数组
注意,不能写成arr [3,4],

由上图可以看出,在内存中二维数组是按照行主序进行存储的,从内存的角度上看,二维数组本质就是一个一维数组。如果把二维数组的每一行看成一个整体,即看成一个数组中的一个元素,那么整个二维数组就是一个一维数组。

如果你是这样定义的;
int [] [] arr=new int[3] [];那就代表你只定义了,一维数组的长度。
如果你定义了一个新的二维数组;
int a[] []=new int[5] [4];而没有对他赋值的话,你直接打印System.out.println(a);那么你得到的只是一个二维数组的地址而已。如果你打印System.out.println(a[3]);那么你就会得到一个一维数组的地址。
 
 

 二维数组在内存中是这样分配的:

 

posted @ 2017-04-15 21:37  玛旁雍错  阅读(467)  评论(0编辑  收藏  举报