Bootstrap

Java基础知识05(二维数组)

二维数组

二维数组就是元素是一维数组的一个数组。
格式:
1:数据类型[][] 数组名 = new 数据类型[m][n];
	m:表示这个二维数组有多少个一维数组。
	n:表示每一个一维数组的元素有多少个。
    int[][] arr = new int[3][2];
	定义了名称为arr的二维数组, 二维数组中有3个一维数组,每一个一维数组中有2个元素,
	一维数组的名称分别为arr[0], arr[1], arr[2]。
	
2:数据类型[][] 数组名 = new 数据类型[m][];  
	int[][] arr = new int[3][];
	二维数组中有3个一维数组,每个一维数组都是默认初始化值null,可以对这个三个一维数组分别进行初始化。
		arr[0] = new int[3];
		arr[1] = new int[1];
		arr[2] = new int[2];
		
3:基本格式:数据类型[][] 数组名 = new 数据类型[][]{{...},{...},{...}};
   简化版格式:数据类型[][] 数组名 = {{...},{...},{...}};
	int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};
	定义一个名称为arr的二维数组,二维数组中的有三个一维数组,每一个一维数组中具体元素也都已初始化。
		 第一个一维数组 arr[0] = {3,8,2};
		 第二个一维数组 arr[1] = {2,7};
		 第三个一维数组 arr[2] = {9,0,1,6};
		 第三个一维数组的长度表示方式:arr[2].length;
(3)案例:
	A:二维数组的遍历
	B:二维数组的求和
	C:杨辉三角形
	二维数组定义
二维数组格式一的内存图解:

int[][] arr = new int[3][2];

System.out.println(arr); //0x001
System.out.println(arr[0]); //0x0001
System.out.println(arr[1]); //0x0002
System.out.println(arr[2]); //0x0003
System.out.println(arr[0][0]); //0
System.out.println(arr[0][1]); //0
在这里插入图片描述

二维数组格式二的内存图解:
在这里插入图片描述

二维数组格式三的内存图解:
在这里插入图片描述
格式一代码如下:

class A{
    public static void main(String[] args){
        //定义一个二维数组
        int[][] arr = new int[3][2];
        //定义了一个二维数组arr
        //这个二维数组有3个一维数组的元素
        //每一个一维数组有2个元素
        //输出二维数组的名称
        System.out.println(arr);//地址值
        //输出二维数组的第一个元素一维数组的名称
        System.out.println(arr[0]);//地址值
        //输出二维数组的第二个元素一维数组的名称
        System.out.println(arr[1]);//地址值
        //输出二维数组的第三个元素一维数组的名称
        System.out.println(arr[2]);//地址值
        //输出二维数组的元素
        System.out.println(arr[0][0]);//0
        System.out.println(arr[0][1]);//0
    }
}

输出结果如下:

[[I@15db9742
[I@6d06d69c
[I@7852e922
[I@4e25154f
0
0

格式二代码如下:

class A{
public static void main(String[] args) {
		//定义数组
		int[][] arr = new int[3][];
		
		System.out.println(arr);	
		System.out.println(arr[0]); //null
		System.out.println(arr[1]); //null
		System.out.println(arr[2]); //null
		
		//动态的为每一个一维数组分配空间
		arr[0] = new int[2];
		arr[1] = new int[3];
		arr[2] = new int[1];
		
		System.out.println(arr[0]);
		System.out.println(arr[1]); 
		System.out.println(arr[2]); 
		
		System.out.println(arr[0][0]); //0
		System.out.println(arr[0][1]); //0
		//ArrayIndexOutOfBoundsException
		//System.out.println(arr[0][2]); //错误
		
		arr[1][0] = 100;
		arr[1][2] = 200;
	}
}

输出结果如下:

[[I@15db9742
[I@6d06d69c
[I@7852e922
[I@4e25154f
0
0

格式三代码如下:

class A{
	public static void main(String[] args) {
		//定义数组
		int[][] arr = {{1,2,3},{4,5},{6}};
		
		System.out.println(arr);
		System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println(arr[2]);
		
		System.out.println(arr[0][0]); //1
		System.out.println(arr[1][0]); //4
		System.out.println(arr[2][0]); //6
		
		System.out.println(arr[0][1]); //2
		System.out.println(arr[1][1]); //5
		//越界
		System.out.println(arr[2][1]); //错误
	}
}
;