引入
记录10个人的年龄
一艘定义10个变量
记录100个人发的年龄
作用
记录一组数据类型相同的数据
特点:长度不可变
名词
长度:数组中可最大存储元素的个数
元素:数组中存储的单个值
下标(索引):元素在数组中的位置,从0开始,到长度-1结束
步骤
声明
语法:
数据类型[] 数组名;
数组名就是数组的变量名
如:
int[] ages;
string[] names;
创建
1.动态创建
特点:声明可以与创建分开
语法:
不带值
数组名=new 数据类型[长度]
带值
数组名=new 数据类型[]{值1,值2...值n};
注意:创建时值的个数就是数组的长度.
声明并创建
不带值
数据类型[] 数组名=new 数据类型[长度];
带值
数据类型[] 数组名=new 数据类型[]{值1,值2....值n};
2.静态创建
特点:必须在声明时创建
语法:
数据类型[] 数组名={值1,值2...值n};
3.动态创建与静态创建的区别
1.使用的区别:动态创建可以初始化也可以修改,静态创建只能初始化时适用
2.内存的区别:
new关键字:
含义:新建
作用:在堆内开辟一片空间
静态创建在常量池中存储
动态创建在堆内存中存储
3.静态创建没有默认值,动态有默认值,基本数据类型默认为0,引用数据类型默认为null;
操作
修改数组中指定位置的元素
语法:数组名[下标]=值;
修改整个数组
语法:动态创建的语法
数组名=new 数据类型[长度]
查
查询数组中指定位置的元素
数组名[下标]
数组长度:数组名.length;
常见的错误:
数组下标越界异常
空指针异常
解决方案:保证不要使用null调用属性或方法.
使用
遍历
概念:将数组中或集合中的数据,逐个取出.
步骤:
1.开启循环,变量的取值范围就是下标的取值范围
2.在循环中通过变量获取数组中对应的值
增强for循环(foreach)
作用:遍历
语法:
for(数据类型 变量名:要遍历的集合或数据){
循环体
}
执行流程:
1.取出数组或集合中第0个元素,赋值给变量名
2.执行循环体
3.取出数组或集合中第1个元素,赋值给变量名
4.执行循环体
5.取出数组或集合中第2个元素,赋值给变量名
6.执行循环体
...
取出数组或集合中最后一个元素,赋值给变量名
执行循环体
结束循环
foreach比for快3倍
查找
概念:寻找数组是否存在指定元素.
步骤:
1.遍历
2.使用获取的元素与指定元素对比,如果没有找到,继续寻找,如果找到了结束遍历.
复制
概念:将数组A中的内容复制到数组B中.
要求:数组B的长度要等于数组A;
数组B的数据类型要与数组A一致;
思想;
1.遍历数组A
2.将取出的元素赋值给B数组相对应的位置
扩容
概念:将数组A的长度变大
思路:
1.创建数组B,要求数组B长度大于数组A;并且与数组A数据类型一致;
2.将数组A的数据复制到数组B中
3.将数组B赋值给数组A
数组在参数中使用
形参
如:
public static void add03(int[] nums){
}
实参
如:
int[] nums01=new int[]{1,2,3,4};
add03(nums01);
返回值
如:
public static int[] add04 (int num01,int num02){
int[] nums=new int[3];
nums[0]=num01;
nums[1]=num02;
nums[2]=num01+num02;
return nums;
}
可变参数
是什么?
形参中使用数组的变形
好处:
传递参数时,可以传递数组,也可以多个值
语法:
数据类型...变量名
注意:
只能在形参末尾使用,一个方法只能使用一个可变参数.