二维数组就是在一位数组上多加了维度,把一位数组比作直线,那么二维数组就是面,由行和列组成的表格,也可以把它看成一个矩阵,所以访问二维数组的方式就必须访问行角标,列角标来具体定位。
具体来说一下二维数组在内存中是如何存储的呢?
1.无论是二维数组,还是多维数组,他们本身就是一个一维数组,只不过该数组的每一个元素是另一个元素数组罢了
数组是存储在堆内存中的,那么二维数组就是把多个一维数组拼接而成,二维数组的列数则是这些一为数组的长度,所以很多题中就会运用到 matrix.length 定位二维数组的行数,matrix[1].length定位二维数组中第二行(因为角标从0开始)的列数,也就是说第二个一位数组的长度。
2.怎么创建二维数组
- 可以直接定义一个数组的行列 例如: int[][] matrix=new int[3][4]; 创建一个三行四列的数组 默认值都为0
- 创建指定元素的数组 例如: int[][] matrix=new int{ {1,2,3,4},{5,6,7,8},{9,10,11,12}};
- 有锯齿矩阵数组 还有方针都是根据行和列的数目来具体确定的
下面有二维数组的具体使用
下面是一些例题:
1.
import java.util.*;
class Demo05_09{
public static void main(String[] args){
//1.输入一个3*4的矩阵
Scanner scanner=new Scanner(System.in);
System.out.println("Enter numbers:");
double[][] matrix=new double[3][4];
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[i].length;j++){
matrix[i][j]=scanner.nextDouble();
}
}
//2.打印每列的和
for(int col=0;col<matrix[0].length;col++){
System.out.println(sumColumn(matrix,col));
}
}
public static double sumColumn(double[][] m,int col){
double sum=0;
for(int row=0;row<m.length;row++){
sum+=m[row][col];
}
return sum;
}
}
2.对角线数字和