数组是存储多个变量(元素)的东西(容器),要求这多个变量的数据类型要一致,直白的说就是数组只能储存相同弄类型的数据,可以是基本数据类型,也可以是引用数据类型
- 数组有两种定义格式:
格式1(推荐使用):数据类型[] 数组名 = new 数据类型[长度]
格式2:数据类型 数组名[] = new 数据类型[长度]
Java中的数组必须先初始化,然后才能使用。所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
- 数组的两种初始化方式
- 动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
格式:数据类型[] 数组名 = new 数据类型[数组长度]; 数组长度其实就是数组中元素的个数。
举例:
int[] arr = new int[3]; 解释:定义了一个int类型的数组,这个数组中可以存放3个int类型的值。
2.静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
举例:
int[] arr = newint[]{1,2,3};
解释:定义了一个int类型的数组,这个数组中可以存放3个int类型的值,并且值分别是1,2,3。
简化格式:
数据类型[] 数组名 = {元素1,元素2,...};
简化格式举例:int[] arr = {1,2,3};
- 访问数组方式:
直接打印数组名,打印的是数组堆内存中的地址
数组中的每个元素都是有编号的,编号是从0开始的,最大的编号就是数组的长度-1
用数组名和编号的配合我们就可以获取数组中的指定编号的元素
这个编号的专业叫法:索引
格式:数组名[编号] -- 数组名[索引]
数组名称为arr,索引为0,1,2
获取数组中元素的格式:
u arr[0]获取数组中的第一个元素
arr[1]获取数组中的第二个元素
arr[2]获取数组中的第三个元素
- 数组两个常见问题:
数组索引越界异常ArrayIndexOfBoundsException,访问到了数组中的不存在的索引时发生。
空指针异常NullPointerException,数组引用没有指向对象,却在操作对象中的元素时。
- 二维数组:其实二维数组就是其中每个元素都是为一维数组的数组。也就是一维数组作为二维数组的元素
二维数组定义格式:
数据类型[][] 数组名;
数据类型数组名[][]; 不推荐
数据类型[] 数组名[]; 不推荐
初始化方式:
数据类型[][] 变量名 = new 数据类型[m][n];
数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};
简化版格式:数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
- 二维数组遍历:
int[][] arr = { {1,2}, {3,4,5}, {6,7,8,9} };
/**
* 二维数组中的一维数组名称:二维数组名[索引]
* arr[0] 其实就是二维数组中的第一个一维数组的名称
* arr[1] 其实就是二维数组中的第二个一维数组的名称
* arr[2] 其实就是二维数组中的第三个一维数组的名称
*/
for (int i = 0; i < arr.length; i++) {
// 外层遍历拿到的是二维数组的元素,也就是一维数组
for (int j = 0; j < arr[i].length; j++) {
System.out.println(arr[i][j]);
}
}
}