二维数组及遍历
- 概念
- 初始化方式详解
- 遍历
我在前面的博文详细说过一维数组的概念初始化方式及遍历,今天这篇博文,可以看过前面博文的会很容易接受,前置博文,请直接点击链接跳转。
什么是二维数组,二维数组和一维数组一样,一维数组存放元素,二维数组存放一维数组,实质也是存储数据的一个容器对象。
二维数组在定义上和一维数组一样,动态初始化和静态初始化。
二维数组的动态初始化方式
数据类型[][]数组名称 = new 数据类型[一维数组的个数] [ 每一个一维数组的元素个数 ]
左边可以写成:
- 数据类型[][]数组名称
- 数据类型 数组名称[][]
- 数据类型[]数组名称[]
右边可以写成:
- 一维数组的个数:有几个值信息
int [][]arr = new int [3][2]
代表的是每一个一维数组的个数:每个一维数组有几个元素信息
下面穿插个案例,更加深入的演示动态初始化:
public static void main(String [] args){
//定义int类型的二维数组
int[][] arrs= new int [3][2];
System.out.println(arrs);
}
这样我们就得到了一个二维数组,我们可以使用toString方法来做字符串输出:
Arrays.toString(arrs);
运行该程序,我们会发现得到三个地址信息,这个在一维数组的时候有讲解,具体看下图:
这个和我们当初看一维数组是一样的,绿色圈圈是一个一维数组,arrs指向堆里new出来的二维数组地址。所以输出的是地址信息。数组如果不赋值都是由初始值.
我们可以对二维数组里的每一个一维数组进行赋值:
//赋值
arrs[0][0]=1;
arrs[0][0]=2;
arrs[1][0]=3;
arrs[1][1]=4;
arrs[2][0]=5;
arrs[2][1]=6;
我们一样可以用toString方法进行输出,
[1,2]
[3,4]
[5,6]
给大家一张赋值后的图
二维数组的静态初始化方式
数据类型[][]数组名称 = new 数据类型[][]{{},{},{},{},{},{}};
简写:数据类型[][]数组名称 ={{},{},{},{},{},{}};
因为二维数组和一维数组太多相同点了,这里同样一个案例:
//静态初始化
int[][] arrs={{1,2,3},{4,5},{6,7,8}};
这里的每一个{}
都代表一个一维数组;
二维数组的遍历
什么是遍历二维数组?
所谓的遍历二维数组,实际是遍历一维数组,然后遍历每个一维数组的信息。
常用方法:forfor循环
方法解析:
//外循环遍历有几个一维数组
for(;;;){
//内循环遍历每一个一维数组的元素
for(;;;){
...
}
}
我们通过上面的方法解析,会有一种看前面说的打印图形的感觉。
下面走几个案例;
案例1:获取二维数组的元素个数。
主函数
public static void main(String [] args){
int count = getCount(b);
System.out.println("个数为:"+count);
}
功能函数
/*
* 分析:
* 1.返回类型 int
* 2.函数名称 getCount
* 3.未知内容参与 int[][]arrs
*/
public static int getCount(int[][]arrs){
//定义一个标识存放元素个数
int count = 0;
//外循环遍历有多少个一维数组
for(int i = 0; i <ars.length;i++){
//内循环遍历每一个一维数组的元素
for(int j = 0; j <arrs.length;j++){
count++; //如果有元素,计数标识+1
}
}
return count; //返回count给调用方
}
案例2:西蒙公司的2018年度销售总额如图:
季度 | 销售额(万元) |
---|---|
第一季度 | 22,66,44 |
第二季度 | 100,150,180 |
第三季度 | 300.240.180 |
第四季度 | 11,33,19 |
请帮西蒙财务统计下当年销售总额;
分析:
- 把以上的数据用二维数组来表示
- 如何统计sum信息(遍历二维数组,相加求和)
- 定义标识,存放sum信息 int sum=0;
- 依次把遍历到的信息存放到sum中
- 输出打印sum信息
public static void main(String []args){
//把以上的数据用二维数组来表示
int [][] nums={{22,66,44},{100,150,180},{300,240,180},{11,33,19}};
//遍历二维数组
int sum = 0;
//外循环遍历有多少个一维数组
for(int i =0;i <nums.length;i++){
//内循环遍历每一个一维数组的元素
for(int j = 0;j<nums[i].length,j++){
sum+=nums[i][j]; //依次相加到sum中
}
}
System.out.println("西蒙公司年销售总额为:"+sum);
}
上面我们也可以进行功能函数抽取,优化代码;
public static int getSum(int [][] nums){
int sum = 0;
//外循环遍历有多少个一维数组
for(int i =0;i <nums.length;i++){
//内循环遍历每一个一维数组的元素
for(int j = 0;j<nums[i].length,j++){
sum+=nums[i][j]; //依次相加到sum中
}
}
return sum;
}
simon:学习二维数组,要综合一维数组来,两种数组的遍历方式有少许不同。
纯手敲,觉得好的可以点个心哦,有任何建议,请直接留言。谢谢!