二维数组及遍历

二维数组及遍历

  • 概念
  • 初始化方式详解
  • 遍历

我在前面的博文详细说过一维数组的概念初始化方式及遍历,今天这篇博文,可以看过前面博文的会很容易接受,前置博文,请直接点击链接跳转。

什么是二维数组,二维数组和一维数组一样,一维数组存放元素,二维数组存放一维数组,实质也是存储数据的一个容器对象。

二维数组在定义上和一维数组一样,动态初始化和静态初始化。

二维数组的动态初始化方式
数据类型[][]数组名称 = 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]

给大家一张赋值后的图
演示1
二维数组的静态初始化方式

数据类型[][]数组名称 = 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

请帮西蒙财务统计下当年销售总额;


分析:

  1. 把以上的数据用二维数组来表示
  2. 如何统计sum信息(遍历二维数组,相加求和)
  3. 定义标识,存放sum信息 int sum=0;
  4. 依次把遍历到的信息存放到sum中
  5. 输出打印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:学习二维数组,要综合一维数组来,两种数组的遍历方式有少许不同。

纯手敲,觉得好的可以点个心哦,有任何建议,请直接留言。谢谢!

  • 48
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值