JAVA基础 —— 二维数组

本文介绍了二维数组的概念,包括静态和动态初始化方法,提供了代码示例进行解释。静态初始化允许直接指定数组元素,而动态初始化则先指定数组大小。此外,文章还讨论了如何遍历二维数组以及展示了内存图的表示方式。最后,通过一个实际例子展示了二维数组在数据统计中的应用。
摘要由CSDN通过智能技术生成

目录

一、 二维数组介绍

二、 二维数组的初始化

1. 二维数组的静态初始化

2. 二维数组的动态初始化

三、二维数组的内存图

 四、练习


一、 二维数组介绍

  • 什么是二维数组:数组中存数组
  • 二维数组的应用场景:当我们需要把数据分组管理的时候,就要用到二维数组

二、 二维数组的初始化

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;
	}

运行结果:

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
主要内容: 1. 数组的定义 2. 数组的分类[按维数] 3. 数组的用法 4. 数组的常见操作 java中的foreach实现方式 一维数组 1. 定义:省略 2. 用法: 声明并赋值: //方法一:先声明,再赋值 int [] arr=new int[5]; arr[0]=10; arr[4]=100; arr[5]=10;//语法无误,编译时报错:java.lang.ArrayIndexOutOfBoundsException System.out.println(arr[5]);//语法无误,编译时报错:错误同上 //方法二:使用for循环动态赋值 //导入java.util.*;包 Scanner input=new Scanner(System.in); int [] arr=new int[5]; for(int i=0;i<arr.length;i++) { System.out.println("请输入第"+(i+1)+"个值"); arr[i]=input.nextInt(); } //方法三:声明时赋值 int [] arr=new int[]{23,45,56,67}; int [] arr1={23,45,56,67}; int [] arr2= new int[5]{23,45,56,67};//错误,此时不能给确定的长度 输出: int [] arr=new int[]{23,45,56,67}; //方法一:使用for循环输出 for(int i=0;i<arr.length;i++) { System.out.println(arr[i]); } //方法二:使用foreach输出:此为JDK5.0 新特性 for(int item : arr) { System.out.println(item); } 常见算法: 1. 求一维数组中的最大[小]值 2. 求一维数组中的总和,平均值 3. 添加,删除,修改,搜索等 具体请参考本人FTP\\5.0S1\\JAVA\\数组完整操作范例。[重复让人如此崩溃!] 二维数组 1. 定义:省略 2. 用法: 声明并赋值: //声明时赋值 int [][]arr={ {1,2,3}, {4,5,6}, {7,8,9} }; 输出: //方法一:使用嵌套for循环输出二维数组 for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { System.out.print(arr[i][j]+" "); } System.out.println(); } //方法二:使用嵌套foreach输出二维数组 for(int row[] :arr) //此时不难看出,二维数组可以看作是每个元素都是一个一维数组的一维数组 { for(int item: row) { System.out.print(item+ " "); } System.out.println(); } 补充: //动态创建规则二维数组 int R=10;//行 int N=5;//列 int [][]arr=new int ­[N]; //动态创建不规则二维数组 int arr[][]; arr=new int[2][]; arr[0]=new int[10]; arr[1]=new int[5]; 赋值都一样:此处省略! 算法体验:杨辉三角 int i,j; int a[][]=new int[10][10]; //给每行的第一列,及对角线处均赋值为1 for(i=0;i<10;i++) { a[i][0]=1; a[i][i]=1; } //从arr[2][1]=a[1][0]+a[1][1]; //推出:a[i][j]=a[i-1][j-1]+a[i-1][j]; //即元素等于两肩之和 for(i=2;i<10;i++) { for(j=1;j<i;j++) { a[i][j]=a[i-1][j-1]+a[i-1][j]; } } for(i=0;i<10;i++) { for(j=0;j<=i;j++) { System.out.print(a[i][j]+" "); } System.out.println(); }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hgngy.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值