所谓二维数组,就是一维数组中的每一个元素是一维数组的数组;
1.二维数组的声明和初始化
1)静态初始化 例如:
int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
//遍历二维数组
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
运行结果:
1 2 3
4 5 6
7 8 9
2)动态初始化 例如:
int[][] arr = new int[3][3];
int iCount=1;
//动态初始化
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
arr[i][j] = iCount;
iCount++;
}
}
//遍历二维数组
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
运行结果:
1 2 3
4 5 6
7 8 9
2.二维数组综合实例
1)求以下矩阵的对角线元素之和。

实现代码:
int[][] arr = {{1,2,3,4},{3,4,5,6},{5,6,7,8},{7,8,9,0}};
int sum =0;
for(int i=0;i<arr.length;i++){
sum+= arr[i][i]+arr[i][arr.length-1-i];
}
if(arr.length%2!=0){ //奇数行。中间的元素多加了一次。
sum-= arr[arr.length/2][arr.length/2];
}
System.out.println("对角线元素之和是:" + sum);
运行结果
对角线元素之和是:34
2)求以下矩阵乘积。

实现代码:
int[][] matrixA = {{1,2,3},{4,5,6}};
int[][] matrixB = {{1,2},{3,4},{5,6}};
int[][] result = new int[2][2];
for(int i=0;i<result.length;i++){
for(int j=0;j<result[i].length;j++){
int temp =0;
for(int k=0;k<matrixA[i].length;k++){
temp += matrixA[i][k]*matrixB[k][j]; //A矩阵的行数对应result的i,B矩阵的列数对应result j;
}
result[i][j] = temp;
}
}
System.out.println("-------------输出结果-------------");
for(int i=0;i<result.length;i++){
for(int j=0;j<result[i].length;j++){
System.out.print(result[i][j]+" ");
}
System.out.println();
}