数组的高级使用--二维数组的使用

二维数组

什么是二维数组

二维数组的初始化

静态初始化

在这里插入图片描述

动态初始化

在这里插入图片描述

#二维数组的赋值

在这里插入图片描述

二维数组数组的内存图例

在这里插入图片描述

#二维数组的遍历

在这里插入图片描述

三维数组的理解

二维数组就是在一维数组的基础上,把每个元素变成了一个数组,那么同理,三维数组
就是在二维数组的基础_上,把二维数组中的元素又变成了一个数组,虽然我们可以通过
Java代码来实现,但是实际操作中,很少有使用场景,了 解其原理即可;

不建议使用 有点复杂

二维数组的案例

1、二维数组以及多位数组的定义方式

	//1、二维数组的定义方式
		//1.1、静态初始化
		int [] arr1 = {1,2,3};
		int [][] arr2 = {{1,2,3},{4,5,6},{7,8,9,10}};
		int [][][] arr3 = {
				{
					{1,2,3},
					{4,5,6},
					{7,8,9}
				},
				{
					{10,11,12},
					{13,14,15},
					{16,17,18}
				},
				{
					{19,20,21},
					{22,23,24},
					{25,26,27}
				}
		};
		//1.2、动态初始化
		int [][] arr4 = new int[][] {};
		int [][] arr5 = {};
		int [][] arr6 = new int[3][];//不能写后面的大括号,以及必须要有高维度的大小
//		int [][] arr7 = new int[][4];//不允许这样写
		int [][] arr8 = new int[3][10];

2、获取数据以及赋值的方式

		//int [][] arr2 = {{1,2,3},{4,5,6},{7,8,9,10}};
		System.out.println(arr2[1][1]);
		//int [][] arr6 = new int[3][];
		//因为我们只定义了数组的一维长度为3,而它的二维长度并没有定义,如果没有定义就相当于你的一维元素的地方
		//是一个null,所以这样调用的话,就会报空指针异常
//		arr6[0][9] = 100;
		//int [][] arr8 = new int[3][10];
		arr8[0][9] = 100;
		arr8[1][2] = 200;
		arr8[2][5] = 300;
		System.out.println(arr8[0][9]+","+arr8[1][2]+","+arr8[2][5]);

3、for循环遍历

		//3.1、for循环
		for(int i = 0;i<arr2.length;i++) {
			for(int j = 0;j<arr2[i].length;j++) {
				System.out.print(arr2[i][j]+"\t");
			}
			System.out.println();//换行
		}
		System.out.println();
		//3.2、直接进行一次for循环,然后在循环体内使用Arrays.toString();
		for(int i = 0;i<arr2.length;i++) {
			System.out.println(Arrays.toString(arr2[i]));
		}
		//3.3、foreach循环
		for(int[] i : arr2) {
			for(int j:i) {
				System.out.print(j+"\t");
			}
			System.out.println();
		}

练习

用随机数对象产生0---1000范围内的整数,用以初始化-8*8的二维数组,然后编程
把随机数放入到二维数组中去,并且找出二维数组中的最大数和最小数,并将其交换位置。
要求输出原始二维数组及交换后的二维数组 (不考虑最大值最小值有重复的情况) ;

		//1、定义出一个8*8的二维数组
		int [][] arr = new int[8][8];
		//2、需要使用到随机数,所以要创建一个Random对象
		Random ran = new Random();
		//3、针对二维数组进行循环
		for(int i = 0;i<arr.length;i++) {
			for(int j = 0;j<arr[i].length;j++) {
				arr[i][j] = ran.nextInt(1001);//0~1000
			}
		}
		//4、输出二维数组最初的样子
		for(int i = 0;i<arr.length;i++) {
			System.out.println(Arrays.toString(arr[i]));
		}
		//5、定义一个最大值max和最小值min,以及最大值的x和y,以及最小值的x和y
		int max = Integer.MIN_VALUE;//比0小的数值;
		int min = Integer.MAX_VALUE;//比1000大的数值;
		int maxX = 0,maxY = 0,minX = 0,minY = 0;
		//6、对二维数组进行遍历,遍历的过程中,拿出每个元素来跟max和min进行比较
		//如果元素比max大,则把元素赋值给max,并且把元素的i和j分别赋值给x和y,如果元素比min小,则同理;
		for(int i = 0;i<arr.length;i++) {
			for(int j = 0;j<arr[i].length;j++) {
				if(arr[i][j]>max) {
					max = arr[i][j];
					maxX = i;
					maxY = j;
				}
				if(arr[i][j]<min) {
					min = arr[i][j];
					minX = i;
					minY = j;
				}
			}
		}
		//7、测试我们获取到的max和min是否对
		System.out.println("max:"+max+",maxX:"+maxX+",maxY:"+maxY);
		System.out.println("min:"+min+",minX:"+minX+",minY:"+minY);
		//8、交换这两个最大值和最小值的位置即可
		arr[maxX][maxY] = min;
		arr[minX][minY] = max;
		//9、输出交换完位置的二维数组
		System.out.println("---------------------------------------------");
		for(int i = 0;i<arr.length;i++) {
			System.out.println(Arrays.toString(arr[i]));
		}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值