文章目录
- 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,第二维的长度(也就第一维的每个元素的长度)是3
int[][] 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 = 3
for(int j = 0; j < arr[i].length; j++) {
res += arr[i][j];
}
}
System.out.println(res);
}
}