一,数组是个容器,他可以存储同种数据类型的同名变量的有限集合
二,数组的特点
(1)存储同种数据类型的元素
(2)数组一旦创建,有大小,大小不可以改变。
(3)在程序运行过程中,临时存储多个值
(4)数组元素在内存中的地址是连续的
三,数组的基本要素
(1)标识符:数据的名称(变量名),用于区分不同的数组
(2)数组元素:向数组中存放的数据
(3)元素下标:对数组元素进行编号,从0开始,数组中的每个元素都可以通过下标来访问
(4)元素类型:数组元素的数据类型
四,数组的定义
1,数组的定义和静态初始化
语法:数组元素的数据类型 [] 数组名 = {元素1,元素2,...,元素n};或 数组元素的数据类型 [] 数组名 = new 数组元素的数据类型[]{元素1,元素2,...,元素n};
举例:int [] scores = {75,64,83,84,74,75,90,81};
2,数组的定义和动态初始化
语法:数组元素的数据类型 [] 数组名 = new 数组元素的数据类型[长度];
举例:int [] scores = new int [54];
3,内存图解
数组元素下标从0开始,长度为n的数组的合法下标取值范围为 0~n-1
五,二维数组 一维数组的元素,是一维数组
定义 声明:数组元素的类型 [][] 数组名 ;
静态初始化 int[][] scores = { { 80, 85, 75, 90 }, { 88, 84, 65, 89 }, { 95, 81, 87, 78, 90 } };
动态初始化 int[][] ages = new int[5][8];
说明:[5]:为二维数组的长度, [8]:为二维数组每个元素(一维数组)的长度
六,工具类Arrays
(1)toString方法: 输出一维数组的元素,调用:Arrays.toString(数组名);
(2)equals方法:比较两个数组是否相同
判断标准 :数组元素的数据类型相同,数组的长度相同,对应索引位置的元素是否相同。调用:Arrays.equals(数组名1, 数组名2);
(3)sort方法:对数组元素进行升序排序。调用:Arrays.sort(数组名);
(4)fill方法:对数组元素进行填充 。调用:Arrays.fill(数组名, 填充的值);
(5)copyOf方法:从旧的数组最开始复制,复制length个元素,并返回一个新数组
代码
int[] array = {22, 40, 18, 11, 25, 48, 24, 41, 24, 42}
System.out.println("原数组:"+Arrays.toString(array));
int [] newArray = Arrays.copyOf(array, 5);
System.out.println("复制后:"+Arrays.toString(newArray));
运行结果:
原数组:[22, 40, 18, 11, 25, 48, 24, 41, 24, 42]
复制后:[22, 40, 18, 11, 25]
(6)binarySearch方法:查询元素val在数组中的下标(要求数组中的元素已经按照升序排列)
代码
int[] array = {22, 40, 18, 11, 25, 48, 24, 41, 24, 42};
System.out.println("原数组:"+Arrays.toString(array));
Arrays.sort(array);
System.out.println("排序后:"+Arrays.toString(array));
int index = Arrays.binarySearch(array, 20);
// 要查询的值不在数组中, (-(插入点) - 1) =返回值
System.out.println("index:"+index);
调用:Arrays.binarySearch(数组名, 要查找的值);