Java基础 3.28

1.二维数组

  • 从形式上定义看 int[][]
  • 原来的一维数组的每个元素是一维数组,就构成了二维数组
int arr[][] = { {0, 0, 0 ,0},
				{0, 1, 1, 1},
				{0, 0, 0, 0},
				{0, 1, 1, 1} };

关于二维数组的关键概念

  • 二维数组的元素个数为arr.length
  • 二维数组的每个元素是一堆数组,所有如果需要得到每个一维数组的值还需要再次遍历
  • 如果我们要访问第(i+1)个一维数组的第(j+1)个值 arr[i][j]
public class TwoDimens {
	public static void main(String[] args) {
		int arr[][] = { {0, 0, 0 ,0},
						{0, 1, 1, 1},
						{0, 0, 0, 0},
						{0, 1, 1, 1} };
        //输出二维图形
		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();//换行
		}
	}
}

二维数组的使用

二维数组的存储机制如图所示

使用方式1:动态初始化

语法:类型[][] 数组名 = new 类型[大小][大小] int a[][] = new int[2][3]

public class TwoDimens02 {
	public static void main(String[] args) {
		int arr[][] = new int[2][3];
		arr[1][2] = 8;
		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:动态初始化

  1. 先声明:类型 数组名[][]
  2. 再定义(开辟空间)数组名 = new 类型[大小][大小]
  3. 赋值(有默认值,比如int类型的就是0)
int arr[][];
arr = new int[2][3];

 使用方式3:动态初始化-列数不确定

public class TwoDimens02 {
	public static void main(String[] args) {
		int arr[][] = new int[3][];//创建二维数组,但是知识确定一维数组的个数
		for (int i = 0; i < arr.length; i++) {//遍历arr每个一维数组
			//给每个一维数组开空间 new
			//如果没有给一维数组new,那么arr[i]就是null
			arr[i] = new int[i + 1];

			//遍历一维数组,并给一维数组的每个元素赋值
			for (int j = 0; j < arr[i].length; j++) {
				arr[i][j] = i + 1;
			}
		}
		
		//输出以上形成的二维数组
		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();//换行
		}
			

	}
}

使用方式4:静态初始化

  • 定义 类型 数组名[][] = {{}, {}, {}} int arr[][] = {{1, 2, 3}, {2, 3, 4}, {6}};
  • 直接在大括号内赋值即可,固定访问

注意:一旦定义了某个二维数组,二维数组中便不可再出现基本数据类型或其他类型,只能是一维数组

错误示范
int arr[][] = {{1, 2, 3}, {2, 3, 5}, 10};

直接报错

二维数组练习

public class TwoDimens03 {
	public static void main(String[] args) {
		//遍历该数组并得到该数组的和
		int arr[][] = {{4 ,6}, {1, 4, 5, 7}, {-2}};
		int sum = 0;
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr[i].length; j++) {
				sum += arr[i][j];
				System.out.print(arr[i][j] + " ");
			}
			System.out.println();
		}
		System.out.print("sum = " + sum);
	}
}

用二维数组创建杨辉三角

ublic class TwoDimens04 {
	public static void main(String[] args) {
		//杨辉三角的创建
		/*1 2 1
		  1 3 3  1
		  1 4 6  4  1
		  1 5 10 10 5 1

		  规律
		  1.第一行有1个元素,第n行有n个元素
		  2.每一行的第一个元素和最后一个元素都是1
		  3.从第三行开始,对于非第一个元素和最后一个的元素的值 arr[i][j]
		  arr[i][j] = arr[i-1][j] + arr[i-1][j-1]
		*/
		int arr[][] = new int[10][];
		for (int i = 0; i < arr.length; i++) {//遍历杨辉的每个元素
			//给每个一维数组开空间
			arr[i] = new int[i + 1];
			//给每个一维数组赋值
			for (int j = 0; j < arr[i].length; j++) {
				//每行的第一个元素和最后一个元素都是1
				if (j == 0 || j == arr[i].length - 1) {
					arr[i][j] = 1;
				} else {//中间的元素
					arr[i][j] = arr[i-1][j] + arr[i-1][j-1];
				}
			}
		}
		//输出杨辉三角
		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();
		}
	}
}

二维数组的使用细节和注意事项

  • 一维数组的声明方式有:int[] x 或 int x[]
  • 二维数组的声明方式有:int[][] y 或 int[] y[] 或 int y[][]
  • 二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不相同 例如:int map [][] = {{1, 2}, {3, 4, 5}} 我们称为列数不等的二维数组
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值