二维数组相当于一维数组的元素是一维数组
一、二维数组声明赋值初始化
动态初始化①
int[][] arr = new int[3][2];
定义了名称为arr的二维数组
 二维数组中有3个一维数组
 每一个一维数组中有2个元素
 一维数组的名称分别为arr[0], arr[1], arr[2]
 给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;
动态初始化②
int[][] arr = new int[3][];
定义了二维数组arr,arr中有3个一维数组
 每个一维数组都是默认初始化值null
 可以对3个一维数组分别进行初始化
arr[0] = new int[3]; arr[1] = new int[1]; arr[2] = new int[2];
静态初始化①
int[][] arr = new int[][]{{3,8,2},{2,7},{9,0,1,6}};
定义一个名称为arr的二维数组,二维数组中有三个一维数组
 每一个一维数组中具体元素也都已初始化
 第一个一维数组 arr[0] = {3,8,2};
 第二个一维数组 arr[1] = {2,7};
 第三个一维数组 arr[2] = {9,0,1,6};
 第三个一维数组的长度表示方式:arr[2].length;
二、二维数组默认初始化值
外层数组:地址值或者null
 内层数组:与一维数组情况相同(点击查看)
三、二维数组引用(索引)
int[][] arr = new int[][]{{2,1},{4,5},{0,3}};
System.out.println(arr[1][1]);   //输出5
System.out.println(arr[1]);  //输出arr[1][]这个一维数组首地址值
System.out.println(arr);  //输出arr[][]这个二维数组首地址值
四、二维数组内存简析
