文章目录
- 1. 二维数组
1. 二维数组
二维数组[][]:数组中的数组
格式1(动态初始化):int[][] arr = new int[3][2];
解释说明:
- 定义了名称为arr的二维数组
- 二维数组中有3个一维数组
- 每个一维数组中有2个元素
- 一维数组的名称分别为arr[0],arr[1],arr[2]
- 给第一个一维数组1脚表位赋值为78写法是:arr[0][1]=78;
格式2(动态初始化):int[][] arr = new int[3][];
解释说明:
- 二维数组中有3个一维数组
- 每个一维数组都是默认初始化值null (注意:区别格式1)
- 可以对这个三个一维数组分别进行初始化
如:arr[0] = new int[3]; arr[1] = new int[1]; arr[2] = new int[2]
注
:这种int[][] arr = new int[][3];
是非法定义
格式3(静态初始化):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
注意1
:特殊写法情况:
int[] x,y[]; //x是一维数组, y是二维数组。
//相当于 int[] x; int[] y[];
对比一维数组和二维数组声明方式:
//一维数组:
int[] x 或者 int x[]
//二维数组:
int[][] y 或者 int[] y[] 或者 int y[][]
注意2
:java中多维数组不必都是规则矩阵形式
例子如下
代码:
public class Test1 {public static void main (String[] args) {int[][] ii = new int[][] {{1,2},{4,3}};int[][] ii0 = new int[2][3]; //第一位部分的长度是2,第二维的长度(也就第一维的每个元素的长度)是3int[][] ii1 = new int [2][]; //只定义第一位的长度,第二维不定义System.out.println(ii[1][0]); // 输出 4}
}
练习题:
int[][] arr = new int[][]{{3,8,2},{2,7},{9,0,1,6}};
获取arr数组中的所有元素的和。使用for的嵌套循环即可。
答案:
解法1:
public class Test1 {public static void main (String[] args) {int[][] arr = new int[][] {{3,8,2},{2,7},{9,0,1,6}};int len = arr.length;int res = 0;for(int i = 0; i < len; i++) {int[] arr0 = arr[i];int ilen = arr0.length; //二维数组的长度for(int j = 0; j < ilen; j++) {res += arr0[j];}}System.out.println(res);}
}
运行结果:
解法2:
public class Test1 {public static void main (String[] args) {int[][] arr = new int[][] {{3,8,2},{2,7},{9,0,1,6}};int res = 0;for(int i = 0; i < arr.length; i++) { // arr.length = 3for(int j = 0; j < arr[i].length; j++) {res += arr[i][j];}}System.out.println(res);}
}