1.数组的概念
数组是一组连续的存储空间,存储多个相同数据类型的值。
2.数组的特点:
1)类型相同
2)长度固定
3. 数组的创建
数据类型[] 数组名 = new 数据类型[数组长度];
4. 数组的使用
1)数组中的每个数据格被称为“数组元素”;
2)对每个元素进行赋值或取值的操作被称为“元素的访问”;
3)访问元素时,需要使用“数组下标”(从0开始,依次+1);
4)访问语法:数组名[下标];
5. 有效下标范围:
0~数组长度-1
6. 数组的遍历
遍历:从头至尾,逐一对数组的每个元素进行访问。
技巧:数组名.length可以动态取得数组长度。
7. 数组的默认值
整数:0
小数:0.0
字符:\u0000
布尔:false
其他:null
8. 数组的创建语法
1)先声明,在分配空间
数据类型[] 数组名;
数组名 = new 数据类型[长度];
2)声明并分配空间
数据类型[] 数组名 = new 数据类型[长度];
3)声明并赋值(繁琐)
数据类型[] 数组名 = new 数据类型 []{value1,value2,value3等}
4)声明并赋值(简单)
数据类型[] 数组名 ={value1,value2,value3....}//注意:不可换行
9. 数组的扩容
因为创建数组时,必须指定长度,并且在创建之后不可更改长度,但我们在开发中会经常遇到数组长度不够的情况,这个时候就需要扩容。
扩容思路:
1)创建大于原数组长度的新数组;
2)将原数组中的元素依次复制到新数组中;
3)将新数组地址赋值给原数组地址进行替换。
复制的方式:
方法1:循环将原数组中的所有元素逐一赋值给新数组;
方法2:System.arraycopy(原数组名,原数组起始,新数组名,新数组起始,长度);
方法3:数据类型 = java.util.Arrays.copyOf(原数组,新长度);//返回带有原值的新数组
10.地址的替换
数组作为引用类型之一,其变量中存储的是数组的地址;
完成元素复制后,需要将新数组地址,赋值给原数组进行替换。
替换方式: 旧数组名 = 新数组名;
11.注意内容
基本数据类型,存储在栈中(基本类型的变量中,直接存储“值”);
引用数据类型,存储在堆中(引用类型的变量中,存储的是在堆中的“地址”)。
基本数据类型的传递,是“值”的传递,一方改变,不会影响另一方,而引用数据类型的传递,是“地址”的传递,一方改变,会影响另一方。
12.可变长参数
概念:可接受多个同类型实参,个数不限,使用方式与数组相同。
语法:数据类型...形参名 //必须定义在形参列表的最后,且只能有一个
可赋值实际参数范围:0~N
13.数组的排序
JDK排序:java.util.Arrays.sort(数组名);//升序
14.二维数组的概念
一维数组中的一维数组,数组中的元素还是数组。
注意:高维数组中的每一个元素,保存了低维数组的地址。
15.二维数组的赋值
1)先声明,再分配空间
数据类型[][] 数组名;
数组名 = new 数据类型[高维下标][低维下标];
2)声明并分配空间
数据类型[][] 数组名 = new 数据类型[高维下标][低维下标];
3)声明并赋值(繁琐)
数据类型[][] 数组名 = new 数据类型[高维下标][];
数组名[] = new 数据类型[低维下标]; //不规则数组,自行new低位数组
4)声明并赋值
数据类型[][] 数组名 = {{value1,value2,value3},{value4,value5}....}; //显示初始化