文章目录
一、二维数组的定义
二维数组 是 存储 一维数组 的 数组
n维数组 : 数组元素是 n - 1
维数组
二、二维数组的声明与初始化
二维数组的声明
int[][] arr;
我们更建议使用以上这种方式声明数组。
int arr[][];
int[] arr[];
二维数组的初始化
方式一:int[][] arr = {{1, 2, 3}, {4, 5, 6}};
方式二:int[][] arr = new int[][]{{1, 2, 3}, {4, 5, 6}};
方式一:声明和初始化不能分开
方式二:声明和初始化可以分开
如:
int[][] arr;
arr = new int[][]{{1, 2, 3}, {4, 5, 6}};//正确
arr = {{1, 2, 3}, {4, 5, 6}};//报错
int[][] arr = new int[5][6];
//[5]表示有五个一维数组
//[6]表示一个一维数组内有6个数据
方式二:生成一个不等长的一维数组
double[][] arr = new double[3][];
//静态初始化第一个一维数组
arr[0] = new double[]{3.14, 6.28};
//动态初始化第二个一维数组
arr[1] = new double[5];
注意: 声明和初始化分开
//数组默认值为
byte 0
short 0
int 0
long 0
float 0.0
double 0.0
boolean false
char 0或者"/u0000"(表现为空)
引用数据类型 如:String 都是 null
//赋值
arr[0][1] = 1;
arr[2][2] = 3;
注意:
1. 数组内的数据类型必须保持一致
int[][] arr = {66, 88};//不兼容类型:int无法转换为int[]
2. 静态初始化和动态初始化不能结合定义!!
如:
int[][] arr = new int[3][3]{{1, 2, 3}, {4, 5, 6}};//错误的,右边中括号内不能有数字
3. 什么时候使用静态初始化,什么时候使用初始化?
(1)当我们事前知道,需要存储哪些数据时候,选用静态初始化。
(2)当我们事前不知道,需要存储哪些数据时候,只能使用动态初始化。
4. 二维数组想要使用,必须指明其一维数组的个数
5. 二维数组通过下标访问
三、Array(数组名).length
Array(数组名).length 该属性可以获取二维数组的长度
二维数组的长度 指的是 数组内一维数组的个数
如:
int[][] arr = new int[][]{{1, 2, 3}, {4, 5, 6}};
System.out.print(arr.length);//2
四、二维数组的遍历
1. for循环遍历
含义:提取出二维数组内所有元素
其中增强型的for循环一般形式:
for (数组元素数据类型 标识符 : 数组名){
标识符 : 数组内的每一个元素
}
//数组的遍历
int[][] arr = {{1, 2, 3}, {4, 5, 6}};
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
//增强型的for循环
for (int[] e : arr) {
for (int ele : e) {
System.out.print(ele + "\t");
}
System.out.println();
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CEMFGlSn-1681656043330)(./…/…/…/AppData/Roaming/Typora/typora-user-images/image-20230416222202814.png)]
2. Arrays.toString(数组名)
int[][] arr = {{1, 2, 3}, {4, 5, 6}};
System.out.print(java.util.Arrays.toString(arr));
//输出:[[I@1b6d3586, [I@4554617c]
五、直接输出数组名
int[][] arr = {{1, 2, 3}, {4, 5, 6}};
System.out.println(arr);//[[I@74a14482
System.out.println(arr[0]);//[I@1b6d3586
System.out.println(arr[1]);//[I@4554617c
System.out.println(arr.hashCode());//1956725890
其中:
[[
表示二维数组
I
表示 int 类型
@
后面输出的 74a14482
是该数组hash码值1956725890
的16进制
——目前可以简单理解为 地址值
String[][] arr = {{"1", "2", "3"}, {"4", "5", "6"}};
System.out.println(arr);//[[Ljava.lang.String;@1b6d3586
其中:
L
表示非基本类型数据
引用数据类型传递的是地址值
int[][] arr = {{1, 2, 3}, {4, 5, 6}};//0x11
int[][] arr1 = arr;//0x11