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