###二维数组的本质
本质就是存放了一维数组的数组
格式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();
}
}