一、定义
数组是一个固定长度的,包含相同类型数据的容器。数组元素可以是对象,也可以是基本类型。
数组在JAVA中是效率最高的存储和随机访问引用序列的方式,通过下标即可访问指定的元素。
二、声明与初始化
声明:
dataType[] arrayRefVar;
dataType arrayRefVar[];
常用上面一种声明方式,语法上更有意义。
初始化:
数组的初始化主要有三种方式:
1.默认初始化:使用new关键字,只指定数组的长度,数组元素的值会根据元素的类型自动设置初始值,如int[] 数组元素初始值为0,boolean[]数组元素初始值为false,包装类型如Integer[]数组元素的初始值为null
eg. int[] arrInt = new int[5]; 声明一个长度为5的int数组,所有元素的值都是0
2.静态初始化:指定数组中每个元素的值,数组长度会自动计算获得
eg. int[] arrInt = {1,3,5,7,9}; 创建一个长度为5,元素分别是1,3,5,7,9的数组
3.动态初始化:指定数组的长度,并为数组元素赋值,未赋值的元素则自动设置初始值。
eg. 创建一个长度为3的float数组,并给前2个元素赋值,第三个元素则为默认值0.0
三、访问数组
上面我们说了数组可以通过下标来访问,下标从0开始,如arrFloat[0]即arrFloat数组第一个元素。
for-each可以让我们在不使用元素索引值的情况下遍历整个数组
eg.
四、一位数组、多维数组
1.一位数组最大长度 Integer.MAX_VALUE
2.多维数组最大维度数 255
3.非矩形数组,数组元素长度可以不同
五、数组的类表示
int[]: [I
byte[]: [B
long[]: [J
float[]: [F
double[]: [D
boolean[]: [Z
char[]: [C
String[]: [Ljava.lang.String;
Object[]: [Ljava.lang.Object;
数组的类表示数组维数“[”和数组中元素类型结合而成
七、ArrayList
思考:
1.数组必须要初始化才能使用,这句话对不对?
eg.
{
int[] arr1 = {1,2,3};
int[] arr2;
/* arr2[0] = 1; */ /* 这里会报错,因为arr2尚未初始化 */
arr2 = arr1;
arr2[1] = 1; /* 这里就不会报错了,因为数组的初始化就是为数组分配内存空间,上面“arr2[0] = 1”那一行因为还没有为数组分配内存空间,所以报错。*/
/* 这里 arr2 = arr1; 已经将爱arr2指向了arr1已经分配好的内存空间,所以这里虽然没有给arr2进行初始化,arr2也是可以访问的*/
}