Java基础-Day06

Java基础-Day06

多维数组

  • 如何理解二维数组?
    • 数组属于引用数据类型
    • 数组的元素也可以是引用数据类型
    • 一个一维数组A的元素如果还是一个一维数组类型的,则次数组称为二维数组
  • 二维数组的属性:
        int[][] arr3 = new int[][]{{1,2,3,4},{4,5,6,7,8},{9,10}};
        System.out.println(arr3.length);//输出:3 数组的内存分析:arr3在堆中一维数组的个数
        System.out.println(arr3[0].length);//输出:4 数组的内存分析:arr3[0]在堆中一维数组的元素个数
        System.out.println(arr3[1].length);//输出:5 数组的内存分析:arr3[0]在堆中一维数组的元素个数
  • 二维数组的使用:
/*
规定:二维数组分为外层数组元素,内层数组元素
	int[][] arr = new int[4][3];
	外层元素:arr[0],arr[1]等等
	内层元素:arr[0][0],arr[1][2]等等
	
	动态数组元素的默认初始化值,有两种初始化方式:
	方式一:int[][] arr = new int[4][3];
		外层元素的初始化值为:地址值
		内层元素的初始化值为:与一维数组初始化情况相同
	方式二:int[][] arr = new int[4][];
		外层元素的初始化值为:null
		内层元素的初始化值为:不能调用,报错,空指针异常
	
*/

//例子如下:
System.out.println(arr[0]);//输出结果:地址值: [I@1b6d3586   数组的内存分析:数组种类+数组类型+数组地址
System.out.println(arr[0][0]);//输出结果:数组类型默认值:0 数组的内存分析:数组地址上的默认值


double[][] arr2 = new double[4][];
System.out.println(arr2[1]);//输出结果:null 数组的内存分析:指向的是arr2[1]栈对应的堆的一维数组,一维数组是引用类型默认值为null
System.out.println(arr2[1][0]);//输出值为:报错,空指针异常 数值的内存分析:arr2[1]已空,在堆中无相关地址
//杨辉三角:yangHui[i][j] = yangHui[i-1][j] + yangHui[i-1][j-1];
//1.声明并初始化二维数组
int[][] yangHui = new int[10][];

//2.给数组的元素赋值
for (int i = 0; i < yangHui.length; i++) {
  yangHui[i] = new int[i + 1];//一维数组初始化
  //2.1 给首末元素赋值
  yangHui[i][0] = 1;
  yangHui[i][i] = 1;
  //2.2 给每行的非首末元素赋值
  for (int j = 1; j < yangHui[i].length - 1; j++) {
    yangHui[i][j] = yangHui[i-1][j] + yangHui[i-1][j-1];
  }
}

//3.遍历二维数组
for (int i = 0; i < yangHui.length; i++) {
  for (int j = 0; j < yangHui[i].length; j++) {
    System.out.print(yangHui[i][j]);
    System.out.print(" ");
  }
  System.out.println();
}
posted @ 2023-06-29 18:33  Clayborne  阅读(10)  评论(0)    收藏  举报