二维数组的概念

###二维数组的本质
本质就是存放了一维数组的数组
格式1:
数据类型[] 数组名 = new 数据类型[数组的长度];
数据类型[][] 数组名 = new 数据类型[m][n]; m: 二维数组中一维数组的长度
n: 每一个一维数组中元素的个数

int[][] arr = new int[3][2];
表示arr中有3个一维数组,每一个一维数组有2个元素

变式:
数据类型 数组名[][] = new 数据类型[m][n]; 数据类型[] 数组名[] = new 数据类型[m][n];

格式2:
数组类型[][] 数组名 = new 数据类型[m][];
m: 二维数组中一维数组的长度
n: m必不可少,n可省略,表示每一个一维数组的元素个数不确定
可以后期动态地改变每一个一维数组元素的个数

int[][] arr = new int[3][2];
		System.out.println(arr); // 地址 [[I@7852e922
		
		System.out.println(arr[0]); // 地址 [I@4e25154f
		System.out.println(arr[1]); // 地址 [I@70dea4e
		System.out.println(arr[2]); // 地址 [I@5c647e05
//		System.out.println(arr[3]); // 数组越界
		
		System.out.println(arr[0][0]); // 0
		System.out.println(arr[0][1]); // 0
		System.out.println(arr[1][0]); // 0
//		System.out.println(arr[1][2]); // 数组越界

###二维数组的静态初始化

int[][] arr = {{11,22,33} , {44,55} , {66,77,88,99} };
System.out.println(arr);//地址

//二维数组的遍历方法
//外层循环控制二维数组中的第几个一维数组
		for (int i = 0; i < arr.length; i++) {
			//内层循环控制第几个一位数组里的第几个元素
			for (int j = 0; j < arr[i].length; j++) {
				System.out.println(arr[i][j]);
			}
		}
public static void main(String[] args) {
		int[][] arr = {{1,7,9,11,13,15,17,19},{2,4,6,8,10}};
		int[] newArr = Arrays.copyOf(arr[1], arr[0].length+arr[1].length);
		System.arraycopy(arr[0], 0, newArr, 5, arr[0].length);
		Arrays.sort(newArr);
		System.out.println(Arrays.toString(newArr));
	}
	//[4, 15, 20, 27][2, 21, 32, 47, 65, 89]

###二维数组打印杨辉三角

//键盘输入打印n行杨辉三角
/*
 * 1				arr[0][0]              
 * 1 1				arr[1][0]	arr[1][1]				
 * 1 2 1			arr[2][0]	arr[2][2]
 * 1 3 3 1			arr[3][0]	arr[3][3]
 * 1 4 6 4 1		arr[4][0]	arr[4][4]
 * 
 * n行n列       
 * 第一列和最后一列的值为1
 * 从第三行开始,每个值为上一行的前一列的值加上上一行的本列的值
 */
public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int n = input.nextInt();
		int[][] arr = new int[n][n];
		for (int i = 0; i < arr.length; i++) {
			arr[i][0] = 1;
			arr[i][i] = 1;
			
		}
		for (int i = 2; i < arr.length; i++) {
			for (int j = 1; j < arr.length - 1; j++) {
				arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
			}
		}
		newArrays(arr);
	}

	private static void newArrays(int[][] arr) {
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j <= i; j++) {
				System.out.print(arr[i][j]+"\t");
			}
			System.out.println();
		}
	}
	

猜你喜欢

转载自blog.csdn.net/rilegoule2/article/details/89371248