目录
一、 二维数组介绍
- 什么是二维数组:数组中存数组
- 二维数组的应用场景:当我们需要把数据分组管理的时候,就要用到二维数组
二、 二维数组的初始化
1. 二维数组的静态初始化
- 格式:数据类型[ ] [ ] 数组名 = new 数据类型[ ] [ ]{ { 元素1,元素2}, { 元素1,元素2} };
- 范例:int[ ] [ ] arr = new int[ ] [ ] { {11,22},{33,44} };
- 简化格式: 数据类型[ ] [ ] 数组名 = { { 元素1,元素2}, { 元素1,元素2} };
- 范例:int[ ] [ ] arr = { {11,22},{33,44} };
public static void main(String[] args) {
//1.二维数组的静态初始化
int[][] arr = new int[][]{{1,2,3},{4,5,6,7,8}};
int[][] arr2 = {{1,2,3},{4,5,6,7,8}};
//以后建议这样定义,把每一个一位数组单独写成一行
//注意:每一个一位数组其实是二维数组中的元素
//所以每一个一维数组之间用逗号隔开,最后一个不需要加逗号
int[][] arr3 = {
{1,2,3},{4,5,6,7,8}
};
//2.获取元素
//arr[i][j]:二维数组
//i:二维数组的索引,获取出来的是里面的一维数组
//j:表示一维数组中的索引
//arr[0]:二维数组中的第一个一维数组
//arr[0][0]:获取第一个一维数组索引为0的元素
//System.out.println(arr[0][0]); //1
//3.二维数组遍历
//外循环:遍历二维数组,得到里面的每一个一位数组
for (int i = 0; i < arr.length; i++) {
//内循环:遍历一维数组,得到里面的每一个元素
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
}
2. 二维数组的动态初始化
- 格式:数据类型[ ] [ ] 数据名 = new 数据类型[ m ] [ n ] ;
- m表示这个二维数组可以存放多少个一位数组
- n表示每一个一维数组可以存放多少个元素
- 范例:int[ ] [ ] arr = new int[ 2] [ 3];
public static void main(String[] args) {
// 利用动态初始化创建二维数字
int[][] arr = new int[3][5];
// 3:表示这个二维数组长度为3,可以存放3个一位数组
// 5:表示每一个一维数组的长度都是5,
// 可以存放5个int类型的元素
// 定义二维数组赋值第一个元素
arr[0][0] = 10;
// 二维数组的遍历
// 外循环:遍历二维数组获取里面每一个一维数组
// 内循环:遍历一维数组中每一个元素
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
三、二维数组的内存图
public static void main(String[] args) { int[][] arr = new int[2][3]; }
内存图表示:
四、练习
某商城每个季度的营业额如下:单位(万元)
第一季度:22,66,44
第二季度:77,33,88第三季度:25,45,65
第四季度:11,66,99
要求计算出每个季度的总营业额和全年的总营业额
public static void main(String[] args) {
// 1.创建二维数组并存储数据
int[][] yearArrArr = { { 22, 66, 44 }, { 77, 33, 88 }, { 25, 45, 65 }, { 11, 66, 99 } };
// 表示全年的营业额
int yearSum = 0;
// 2.遍历二维数组,得到每一个一维数组的和
for (int i = 0; i < yearArrArr.length; i++) {
// i 二维数组中每一个索引
// yearArrArr[i] 元素(一维数组)
int[] quarterArr = yearArrArr[i];
int sum = getSum(quarterArr);
System.out.println("第" + (i + 1) + "个季度的总营业额为:" + sum);
yearSum = yearSum + sum;
}
System.out.println("全年总营业额为:" + yearSum);
}
// 定义一个方法,计算每一个季度的营业额
public static int getSum(int[] arr) {
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum = sum + arr[i];
}
return sum;
}
运行结果: