一维数组
概念
一段连续的数据类型相同的长度固定的存储单元,是一种引用数据类型
声明方式
- 数据类型[] 数组名称 = new 数据类型[数组的长度]; (或者:数据类型 数组名称[] = new 数据类型[数组的长度]; 不推荐)
- 调用数组的length属性可以获取数组的长度
- 可以通过下标的方式访问数组中的每一个元素。需要注意的是:数组的 下标从0开始,对于长度为n的数组,下标的范围是0~n-1。
int[] arr=new int[5]; //声明一个长度为5的数组
int arr1[]=new int[5]; //声明一个长度为5的数组
System.out.println("数组的长度:"+arr.length);
System.out.println("数组下标为0的值:"+arr[0]);
初始化方式
- 基本类型的数组(数据元素为基本类型)创建后,其元素的初始值:byte、 short、char、int、long为0;float和double为0.0;boolean为false。
- 可以在数组声明的同时进行初始化,具体如下: 数据类型[] 数组名称 = {初始值1, 初始值2, ...} 或者 数据类型[] 数组名称 = new 数据类型[]{初始值1, 初始值2, ...}
int[] arr={1,2,3,4,5}; //声明并初始化
int arr1[]=new int[]{1,2,3,4,5};
数组的优缺点
- 可以直接通过下标(或索引)的方式访问指定位置的元素,速度很快。
- 数组要求所有元素的类型相同。
- 数组要求内存空间连续,并且长度一旦确定就不能修改。
- 增加和删除元素时可能移动大量元素,效率低。
数组工具类
java.util.Arrays类可以实现对数组中元素的遍历、查找、排序等操作。
常用方法
-
static String toString(int[] a) :输出数组中的内容
int[] arr={1,2,3,4,5}; System.out.println(Arrays.toString(arr)); // 输出 : [1, 2, 3, 4, 5]
-
static void fill(int[] a, int val) : 将参数指定元素赋值给数组中所有元素
int[] arr=new int[5]; Arrays.fill(arr,5); System.out.println(Arrays.toString(arr)); // 输出 : [5, 5, 5, 5, 5]
-
static boolean equals(int[] a, int[] a2) : 判断两个数组元素内容和次序是否相同,内容和次序完全相同返回true
int[] arr={1,2,3,4,5}; int[] arr1={1,2,3,4,5}; int[] arr2={1,2,3,4,6}; int[] arr3={5,4,3,2,1}; System.out.println(Arrays.equals(arr,arr1)); //true System.out.println(Arrays.equals(arr,arr2)); //false System.out.println(Arrays.equals(arr,arr3)); //false
-
static void sort(int[] a) : 对数组中的元素进行从小到大排序
int[] arr={5,4,1,3,2}; Arrays.sort(arr); System.out.println(Arrays.toString(arr)); // 输出 : [1, 2, 3, 4, 5]
-
static int binarySearch(int[] arr, int key):使用二分法查找,从数组中查找参数指定元素所在的位置,若不存在返回负数 ,使用前数组是需要排好序的,如果 key < arr[]数组中最小的元素,则返回-1,若key > arr[]数组中最大的元素,则返回 –arr.length - 1
int[] arr={0,1,2,3,4}; System.out.println(Arrays.binarySearch(arr,3)); //3
-
--- static int[] copyOf(int[] array,int length) :复制指定长度的数组 length:指定长度
--- static int[] copyOf(int[] arrray,int from,int to) : 复制数组,从下标from(包括)到下标(to)不包括,底层都是使用了System.arraycopy()方法。
--- System.arraycopy(Object src,int srcPos,Object dest,int destPos,int length) : 复制数组, src:原数组 ,srcPos:原数组起始位置 ,dest:目标数组,destPos:目标数组起始位置,length:复制的长度
int[] arr={0,1,2,3,4}; int[] res = Arrays.copyOf(arr, 3); System.out.println(Arrays.toString(res)); //输出:[0, 1, 2] int[] res1 = Arrays.copyOfRange(arr,1,3); System.out.println(Arrays.toString(res1));//输出:[1, 2] int[] res2=new int[5]; System.arraycopy(arr,0,res2,0,arr.length); System.out.println(Arrays.toString(res2));//输出:[0, 1, 2, 3, 4]