二维数组
二维数组就是元素是一维数组的一个数组。
格式:
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]); //错误
}
}