二维数组
格式1: int [] [] arr = new int [3] [2] ;
· 定义了一个名称为arr的二维数组
· 二维数组中有3个一维数组
· 每一个一维数组中有两个元素
· 一维数组的名称分别为 arr[0], arr[1], arr[2]
· 给第一个一维数组1脚标位赋值为78的写法是:arr [0] [1] =78 ;
// int [] arr = new int [3] ; (一维)
int[][] arr = new int[3][2]; // (二维)
// 创建一个二维数组,该数组中有3个一维数组,每一个一维数组中有两个元素。
System.out.println(arr);
// 直接打印二维数组 [[I@c17164
System.out.println(arr[0]); [I@1fb8ee3
//直接打印二维数组中的角标0的一维数组
System.out.println(arr[0][0]);
//直接打印二维数组中的角标0的一维数组中角标为0的元素。 0
// 默认初始化值 null
// 小数组也是实体,都需要在内存中开辟空间
}
二维数组定义方式和内存图解1
明确了二维数组长度的同时明确了一维数组的长度
内存图解2
明确二维数组的长度但没有明确一维数组的长度
int [] [] arr = new int [3] [] ;
分别对二维数组中的每一个小数组进行初始化。
arr [0] = new int [2];
arr [1] = new int [1];
arr [2] = new int [3];
//以上三个都是属于二维数组里的小数组
// 二维数组里包含三个一维数组,分别是arr[0],arr[1],arr[2];
// 一维数组arr[0]是个长度为2的数组,一维数组arr[1]是个长度为1的数组,一维数组arr[2]是个长度为3的数组
int [] [] arr = new int [3] [];
System.out.println(arr);
// 直接打印二维数组 [[I@C17164
System.out.println(arr[0]);
//直接打印二维数组中的角标0的一维数组 null
System.out.println(arr[0][0]);
//直接打印二维数组中的角标0的一维数组中角标为0的元素。 NullPointerException
二维数组的第二种定义方式
int [] [] arr = new int [3] [2] ;
System.out.println(arr.length);
// 打印二维数组的长度,其实就是一维数组的个数
System.out.println(arr[1].length);
// 打印二维数组中角标为1的一维数组的长度
int [] [] arr ={{3,1,7}, {5,8,2,9}, {4,1}};
遍历
for (int x=0 ; x<arr.length ; x++ )
{
for (int y=0 ;y<arr[x].length ; y++ )
{
System.out.println(arr[x] [y]+",");
// sum += arr [x] [y];
// (sum = sum + arr[x] [y];)
}
}
二维数组应用场景
编号与数组对应。
数据多数组存,数组多二维数组存。
甲: 30 59 28 17
乙: 37 60 22 19
int [] arr = { 30 ,59,28 ,17} ,{37 ,60 ,22 ,19};