二维数组
定义格式:int [][] arr=new int[3][4];
int [] x,y[];
上面这种定义方式中x是一维数组,y是二维数组
相当于int [] x;
int [] y [];
该数组包括3个一维数组,每个一维数组包括四个元素,其中aarr[0] arr[1]相当于一个一维数组,既该数组包括了三个一维数组,
在二维数组中,例如int [][] arr=new int[3][4],该数组中包含了三个以为数组,运行下面的程序
package execisetest;
public class MutiArray {
public static void main(String [] args){
int [][]arr=new int[3][4];
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr);
}
}
运行结果为
[I@18c56d
[I@497934
[I@1b48197
[[I@1a80a69
返回的是三个一维数组的地址和一个二维数组的首地址
在内存中的存储结构如下图
疑问
其中arr这个是存放在栈中的,但是arr[0] arr[1] arr[2] 的输出也是地址,那么这些地址存放在哪?是定义二维数组时就在栈中保存了arr arr[0] arr[1] arr[2] 这四个变量内容还是只保存了arr,如果只保存了arr那么arr[0] arr[1] arr[2] 的值又是怎么得到的?