数组是具有相同数据类型的一组数据的集合。
一、一维数组的创建及使用
1.1创建一维数组
法一:先声明,再用new运算符进行内存分配
1.1.1声明一维数组方式:
1.数组元素类型[] 数组名字;
2.数组元素类型 数组名字[];
1.1.2用new运算符分配内存
数组名字 = new 数组元素类型[数组元素的个数];(数组下标从0开始,整型数组的初始值为0)
int[] arr;//声明数组
arr=new int[6];//用new来进行内存分配
法二:声明的同时为数组分配内存
数组元素的类型[] 数组名 = new 数组元素的类型[数组元素的个数]
数组元素的类型 数组名[] = new 数组元素的类型[数组元素的个数
int[] month=new int[10];//声明并为其分配内存
1.2初始化一维数组
int[] arr1=new int[] {1,3,4,3};//方法一
int[] arr2= {1,3,4,3};//方法二
二、二维数组的创建及使用
二维数组常用于表示表,表中的信息以行和列的形式组织,第一个下标代表元素所在的行,第二个下标表示元素所在的列。
2.1创建二维数组
法一:先声明,再用new运算符进行内存分配
2.1.1声明二维数组方式:
1.数组元素类型[][] 数组名字;
2.数组元素类型 数组名字[][];
2.1.2用new运算符分配内存
1.直接为每一维分配内存空间
2.分别为每一维分配内存空间
int[][] a;// 声明二维数组
a = new int[2][3];//表示一个两行三列的数组
int[][] b;//声明二维数组
b = new int[2][];//表示该数组有两行
a[0]=new int[2];//表示该数组第一行有两列
a[1]=new int[3];//表示该数组第二行有三列
法二:声明的同时为数组分配内存
int[][] arr=new int[2][3];//声明的同时为数组分配内存
2.2初始化二维数组
int a1[][] = { { 12, 13 }, { 11, 3 } };//方法一
a1[1][1] = 20;// 方法二:给a1[1]的第二个元素赋值
三、数组的基本操作
3.1遍历数组
遍历数组通常是用for循环来遍历的。
3.1.1一维数组的遍历(for循环单层遍历)
int a[] = new int[] { 22, 32, 332, 11 };
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");// 22 32 332 11
}
3.1.2二维数组的遍历(for循环双层遍历)
int a1[][] = { { 22, 33, 1 }, { 1, 2, 11 }, { 33, 221, 22 } };
for (int i = 0; i < a1.length; i++) {
for (int y = 0; y < a1[i].length; y++) {
System.out.print(a1[i][y] + " ");
}
System.out.println();
}
// 22 33 1
// 1 2 11
// 33 221 22
3.2 填充替换数组元素
数组中的元素定义完成后,可通过Arrays类的静态方法fill()来对数组中的元素进行替换。以int型数组为例介绍fill()方法的使用方法。
fill(int[] a,int value)
a:要进行元素替换的数组。
value:要存储数组中所有元素的值。(全部替换)
int a[] = { 22, 44, 44, 22, 11 };
Arrays.fill(a, 3);// 3 3 3 3 3
fll(int[] a,int fromIndex,int toIndex,int value)
a:要进行填充的数组
fromIndex:要使用指定值填充的第一个元素的索引(包括)
toIndex:要使用指定值填充的最后一个元素的索引(不包括)
value:要存储数组中所有元素的值。(部分替换)
int b[] = { 22, 33, 11, 31, 31, 1, 4, 1 };
Arrays.fill(b, 2, 5, 5);//22 33 5 5 5 1 4 1
3.3对数组进行排序
通过Arrays类的静态sort()方法可以实现对数组的排序(升序)。
语法:Arrays.sort(Object)
int a[]= {2,4,24,4,1};
Arrays.sort(a); //1 2 4 4 24
3.4复制数组
Arrays类的copyOf()方法与copyOfRange()方法可以实现对数组的复制。
(1)copyOf()方法
语法:copyOf(arr,int newlength)
arr:要进行复制的数组
newlength:复制后新数组的长度。新数组长度小于等于原数组长度时,从原数组下标为0开始复制。若新数组长度大于原数组长度时,超过部分用0或null来填充。
int a[] = { 22, 11, 444, 11, 33, 22, 11, 44 };
int arr[] = Arrays.copyOf(a, 4);//22 11 444 11
(2)copyOfRange()方法
语法:copyOfRange(arr,int fromIndex,int to index)
int a[] = { 22, 11, 444, 11, 33, 22, 11, 44 };
int arr1[] = Arrays.copyOfRange(a, 2, 4);//444 11
3.5数组查询
Arrays类的binarySearch()方法,可使用二分搜索法来搜索指定数组,以获取指定对象。
语法:binarySearch(Object[] a,Object key)
a:要搜索的数组
key:要搜索的值。Key包含在数组中,则返回搜索值的索引值;否则返回-1或者“-”(插入点)插入点是第一个大于搜索键的元素索引。
int[] a = {2,4,11,53};
int index = Arrays.binarySearch(a, 4);//1
int index1 = Arrays.binarySearch(a, 10);//-3
语法:binarySearch(Object[] a,int fromIndex,int toIndex,Object key)
补充:Key包含在数组中,则返回-1或者“-”(插入点)插入点是第一个大于搜索键的元素索引。如果范围中所有元素都小于指定的键,则返回toIndex。
int[] a = {4,3,1,51,5,252,6,2,4};
int index = Arrays.binarySearch(a,3,9, 4);//-4
int index1 = Arrays.binarySearch(a,0,9, 809);//-10
总结
1.数组遍历------------>for循环
2.填充替换数组元素----------->Arrays.fill(int[] a,int value)和Arrays.fll(int[] a,int fromIndex,int toIndex,int value)
3.对数组进行排序------------>Arrays.sort(Object)
4.复制数组----------->Arrays.copyOf(arr,int newlength)和Arrays.copyOfRange(arr,int fromIndex,int to index)
5.数组查询---------------->Arrays.binarySearch(Object[] a,Object key)和Arrays.binarySearch(Object[] a,int fromIndex,int toIndex,Object key)