目录
什么是二维数组?
1. 从定义形式上看
int[][]
2. 一维数组的每个元素是一维数组, 就构成二维数组
3.二维数组的每个元素是一维数组, 所以如果需要得到每个一维数组的值,还需要再次遍历
快速入门:
/*
请用二维数组输出如下图形
0 0 0 0 0 0
0 0 1 0 0 0
0 2 0 3 0 0
0 0 0 0 0 0
*/
public class TwoDimensionalArray01 {
public static void main(String[] args) {
//什么是二维数组:
//1. 从定义形式上看 int[][]
//2. 可以这样理解,原来的一维数组的每个元素是一维数组, 就构成二维数组
int[][] arr = { {0, 0, 0, 0, 0, 0},
{0, 0, 1, 0, 0, 0},
{0,2, 0, 3, 0, 0},
{0, 0, 0, 0, 0, 0} };
System.out.println("二维数组的元素个数=" + arr.length);
//关于二维数组的关键概念
//(1) 二维数组的每个元素是一维数组, 所以如果需要得到每个一维数组的值
// 还需要再次遍历
//(2) 如果我们要访问第 (i+1)个一维数组的第j+1个值 arr[i][j];
// 举例 访问 3, =》 他是第3个一维数组的第4个值 arr[2][3]
System.out.println("第3个一维数组的第4个值=" + arr[2][3]); //3
//输出二维图形
for(int i = 0; i < arr.length; i++) {//遍历二维数组的每个元素
for(int j = 0; j < arr[i].length; j++) {
//1. arr[i] 表示 二维数组的第i+1个元素 比如arr[0]:二维数组的第一个元素
//2. arr[i].length 得到 对应的 每个一维数组的长度
System.out.print(arr[i][j] + " "); //输出了一维数组
}
System.out.println();//换行
}
}
}
二维数组的使用:
使用方式 1: 动态初始化
语法:
类型[][] 数组名=new 类型[大小][大小]
比如:
int a[][]=new int[2][3]
这里面的2表示:有两个一维数组。3表示:每个一维数组里面有3个元素
案例演示:
public class TwoDimensionalArray02 {
public static void main(String[] args) {
int arr[][]; //声明二维数组
arr = new int[2][3];//再开空间
arr[1][1] = 8;
for(int i = 0; i < arr.length; i++) {//遍历 arr 数组
for(int j = 0; j < arr[i].length; j++) {//对每个一维数组遍历
System.out.print(arr[i][j] +" ");
}
System.out.println();//换行
}
}
}
使用方式 2: 动态初始化
语法:
先声明:类型 数组名[][];
再定义(开辟空间) 数组名 = new 类型[大小][大小] 赋值
(有默认值,比如 int类型的就是 0)
使用方式 3: 动态初始化-列数不确定
案例演示
需求:使用动态初始化创建下面二维数组,并输出。
代码如下:
public class TwoDimensionalArray03 {
public static void main(String[] args) {
//创建 二维数组,一个有3个一维数组,但是每个一维数组还没有开数据空间
int[][] arr = new int[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;//赋值
}
}
for(int i = 0; i < arr.length; i++) {//遍历arr输出//遍历arr输出
for(int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");//输出arr的每个一维数组
}
System.out.println();//换行
}
}
}
使用方式 4: 静态初始化
语法:
定义 类型 数组名[][] = {{值 1,值 2..},{值 1,值 2..},{值 1,值 2..}}
比如:
int[][] arr = {{1,1,1}, {2,2}, {3}};
分析代码:
1. 定义了一个二维数组 arr
2. arr 有三个元素(每个元素都是一维数组)
3. 第一个一维数组有 3 个元素 , 第二个一维数组有 2 个元素, 第三个一维数组有 1 个元素
案例演示:
/*
int arr[][]={{4,6},{1,4,5,7},{-2}}; 遍历该二维数组,并得到和
*/
public class TwoDimensionalArray05 {
public static void main(String[] args) {
int arr[][]= {{4,6},{1,4,5,7},{-2}};
int sum = 0;
for(int i = 0; i < arr.length; i++) {//遍历每个一维数组
for(int j = 0; j < arr[i].length; j++) { //遍历二维数组
sum += arr[i][j];//将各个值累计到 int sum
}
}
System.out.println(sum);
}
}
二维数组使用细节和注意事项
(1) 一维数组的声明方式有:
int[] x 或者 int x[]
(2) 二维数组的声明方式有:
int[][] y 或者 int[] y[] 或者 int y[][]
(3) 二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不相同。比如: map[][] 是 一个二维数组
int map [][] = {{1,2},{3,4,5}}
由 map[0] 是一个含有两个元素的一维数组 ,map[1] 是一个含有三个元素的一维数组构成,我们也称为列数不等 的二维数组