我们可以吧二维数组理解成为,原来的一维数组中的每一个元素里又存放了一个一维数组,然后就构成了二维数组。就是数组里面又套了一个数组
二维数组也类似于以前小时候学的二维直角坐标系(XY轴),每个X轴和Y轴对应的位置就是一个二维数组元素。
二维数组的定义和一维数组一样,也是要先声明后开辟内存空间才能使用
int[][] arr1;//声明 arr1 = new int[3][3]//再开空间 //声明和开辟空间写在一起: //数据类型[][] 数组名 = new 数据类型[行数][列数] int[][] arr = new int[6][6];//定义了一个6行6列的二维数组
静态初始化
int[][] arr = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; //定义了一个二维数组,其中里面有4个一维数组,每个一维数组里面有4个元素 //也可以理解为定义了两个4行4列的二维数组
动态初始化
String[][] b=new String[10][10];//定义了一个二维数组,其中里面有10个一维数组,每个一维数组里面有10个元素 b[0]=new String[]{"刘备","关羽","张飞"};//第一行 b[1]=new String[]{"Java","PHP","c++"};//第二行
//例子 public class demo01 { public static void main(String[] args) { //静态初始化 int[][] a={{1,2,3,4},{4,5,6,7},{8,9,10,11},{10,11,12,13}}; //遍历 for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[i].length; j++) { //arr[i].length 相当于得到了 对应的 每个一维数组的长度,arr[i]就是拿到其中的一个一维数组的意思 System.out.print(a[i][j]+" "); } System.out.println();//换行 } } }
int[][] arr = {{1,2,1,2,1,2},{3,4,3,4,3,4},{5,6,5,6,5,6},{7,8,7,8,7,8}} System.out.println("二维数组的元素个数=" + arr.length);//arr.length = 4; //输出结果 //二维数组的元素个数=4
//arr[1][1]表示第二行第二个元素
public class TwoDimensionalArray { public static void main(String[] args) { //创建 二维数组,一共有3个一维数组,但是每一个一维数组还没有开数据空间 int[][] arr = new int[3][];//! ! 列数不确定 ! ! /* 要求输出数组: i=0: 1 i=1: 2 2 i=3; 3 3 3 */ for (int i = 0; i < arr.length; i++) {//遍历arr每个一维数组 //给每个一维数组开空间 new //如果没有给一维数组 new,那么 arr[i]就是null arr[i] = new int[i + 1]; //遍历一维数组,并给一维数组的每个元素赋值 for (int j = 0; j < arr[i].length; j++) { arr[i][j] = i + 1;//赋值 } } //遍历输出 System.out.println("最终二维数组为:"); for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[i].length; j++) { System.out.print(arr[i][j]+"\t"); } System.out.println(); } } }
结果: