🎉默认自己无能,无疑是给失败制造机会!🎉
一、二维数组的定义
定义:对于二维数组的理解,我们可以看成是一维数组array1有作为另一个数组array2的元素而存在。
二、二维数组的使用
1.二维数组的使用和初始化
int[][] arr = new int[][]{{1,1,1},{1,2},{1,2,3}};//二维数组的静态初始化
String[][] arr1 = new String[3][2];//二维数组的动态初始化
String[][] arr2 = new String[3][];
arr2[1] = new String[4];//这也是二维数组动态初始化的一种方法
2.如何调用数组指定位置的元素
System.out.println(arr[0][0]);//输出第一行第一列的元素值
System.out.println(arr1[1][1]);//输出第二行第二列的元素值
3.如何获取数组的长度
System.out.println(arr1.length);//3
System.out.println(arr1[0].length);//2
System.out.println(arr[1].length);//2
4.如何遍历二维数组
for (int i = 0; i < arr1.length; i++) {
for (int j = 0; j < arr1[i].length; j++) {
System.out.print(arr1[i][j]);
}
}
5.数组元素的默认初始值
规定:二维数组分为外层数组的元素,内层数组的元素。
int[][] arr = new int [4][3];
外层元素:arr[0],arr[1]等
内层元素:arr[0][0],arr[1][2]等
针对于初始化方式一:int[][] arr1 = new int[4][3];
外层元素的初始化值为:地址值 內层元素的初始化值为:与一维数组的情况相同
针对于初始化方式二:int[][] arr2 = new int[4][];
外层元素的初始化值为:null 內层元素的初始化值为:不能调用,否则报错
代码及运行情况如下:
System.out.println(arr1[2]);//地址值
System.out.println(arr1[2][1]);//0,具体情况与一维数组相同
System.out.println(arr2[2]);//null
System.out.println(arr2[3][2]);//报错
6.数组的内存解析
具体过程是先在栈里面给arr分配空间,new的对象都在堆空间,new出来的对象会有一个地址值并且将这个地址值赋给栈空间的arr,,arr通过这个地址值指向对空间中造好的数组,由于new出来的数组为int[4][]故堆空间中的内容为3个null,如果此时输出的话会得到如图结果,arr[0] = new int[3],又new一个数组并且生成一个新地址值指向arr[0],并且最初元素全为0,通过语句arr[0][1] = 5;为数组内的一个元素赋值,将原先的0给覆盖掉同理得另一个。
三、二维数组的练习之杨辉三角
1.要求
通过代码实现杨辉三角形,三角形第一个元素和最后一个元素都是1,其他的各个元素都是其上一行元素和上一行的前一个元素之和。
2.代码实现
public static void main(String[] args) {
//1、二维数组的声明和初始化
int[][] yangHui = new int[10][];
//2、给二位数组赋值
yangHui[0] = new int[1];
for (int i = 0; i < yangHui.length; i++) {
//给每行的首元素赋值
yangHui[i] = new int[i + 1];
yangHui[i][0] = yangHui[i][i] = 1;
if (i > 1) {
for (int j = 1; j < yangHui[i].length - 1; j++) {
yangHui[i][j] = yangHui[i - 1][j - 1] + yangHui[i - 1][j];
}
}
}
//3、遍历二维数组
for (int i = 0; i < yangHui.length; i++) {
for (int j = 0; j < yangHui[i].length; j++) {
System.out.print(yangHui[i][j] + "\t");
}
System.out.println();
}
}
}
3.运行截图
版权归原作者 敲代码的小王! 所有, 如有侵权,请联系我们删除。