1、数组的基本性质
- 数组会在内存空间开辟一块连续的空间,数组中第一个数据的内存地址就代表了整个数组的内存地址。
- 数组可以存放基本数据类型,也可以存放引用数据类型。
- 根据数组类型,数组的每个空间存储相同的数据类型的数据。
- 数组的长度是创建时就固定的,无法随意改变,只能通过数组拷贝创建新的数组进行扩容,建议少进行数组拷贝,它会降低效率。
- 所有数组对象都有length属性。代表数组的长度。
- 数组有一维数组(使用最多),二维数组,三维数组,多维数组。
2、声明/定义一维数组
先写数组类型,再写数组名字或者 []
注意:[]的位置一定在数组类型后,但可以在数组名字前,也可以在数组名字后。[]中不能有数字。
//声明int类型的一维数组
int[] arr;
//声明String类型的一维数组
String arr[];
3、初始化一维数组
声明数组并分配空间后,数组的每个元素将会赋予初始值
//第一种方式:创建arr数组,数组长度为3,数组中的元素分别为1,2,3
int[] arr1 = {1,2,3};
//第二种方式:创建arr数组,数组长度为3,元素赋默认值0
int[] arr2 = new int[3];
//第三种方式:与第一种方式性质相同
3) int[] arr2 = new int[]{1,2,3}
//注意:定义数组后
int arr[];
//arr = {12,3,4}; 直接赋值是错误的!
4、数组下标
通过数组**下标**对数组中的元素赋值/修改,数组下标是从**0**开始,下标可以是整型常量/整型变量/整型表达式
5、创建二维数组
与一维数组类似,数组类型必须先写,[]和数组名字前后顺序可以随意。
//第一种直接创建并赋值
//数组的各行列数可以不同
int[][] arr = {{1,2,3},{6},{8,9}};
//第二种是初始化了二维数组的大小
//第一个[]中的数字代表行数,必须写。
//第二个[]中的数字代表列数。
int[]arr[] = new int[3][3];
//第三种和第一种性质相同
int[]arr[] = new int[][]{{12,34,45},{12,4,56}};
6、遍历一维数组和二维数组
//创建一维数组
int[] arr = new int[3];
//遍历一维数组种的所有元素
for(int i =0 ; i<arr.length ; i++){
System.out.print(arr[i]+" ");
}
//创建二维数组
int[][] arr = new int[3][3];
//遍历一维数组种的所有元素
for(int i =0 ; i<arr.length ; i++){
for(int j=0 ; j<arr[i].length ; j++){
System.out.print(arr[i][j]+" ");
}
}
7、数组的优点
查询/检索某个元素时,效率很高
因为数组的每个元素的内存空间是连续且同等大小。知道第一个元素的内存地址和 每个元素所占内存空间大小,就能知道每个元素的内存地址,直接通过内存地址定 位元素,所以数组的查询/检索效率很高。
8、数组的缺点
1.在数组随机删除/增加元素的时候,效率较低
因为在数组上随机增删元素会设计到后面元素统一向后/向前移位的操作,大大降 低了效率。
2. 不能存储大数据量
因为很难在内存上找到一块特别大的连续的内存空间。
注意:对于在数组最后的那个位置增删元素也是效率较高的。