数组是具有相同数据类型的一组数据的集合,在Java中将数组看作一个对象。
1、数组的创建及初始化
①一维数组
a.先声明,再用new运算符分配内存
声明一维数组有两种形式(以int类型为例)
(1)数组元素类型 数组名字[ ]; int arr[ ];
(2)数组元素类型[ ] 数组名字;int[ ] arr;
声明数组后,还不能真正使用数组,需要为其分配内存空间,语法格式如下:
数组名字 = new 数组元素类型[数组元素的个数];arr=new int[10];
从上面我们知道,这种方法 需要两个语句,比较浪费时间,因此我们可以把两局话合在一起,也就是我们的第二种方法
b.声明的同时为数组分配内存
int arr[ ]=new int[12];
这个语句创建了数组arr,也为他分配了12个int长度的空间,这也是Java程序中的普遍做法。
一维数组的初始化有以下两种形式:
int arr[ ]=new int[ ]{1,2,3,4,5};
int arr[ ]={1,2,3,4,5};
② 二维数组
二维数组同样可以把声明和分配数组拆开或合起来,只是把一维中的每个元素再看成一个一维数组。
int arr[ ][ ]=new int[2][4];
初始化:int arr[ ][ ]={{1,2,3,4},{1,2,3,4}};
2、数组的基本操作
①遍历数组
a.用for循环实现
可以通过数组的length属性得到数组长度:arr.length
public class First {
public static void main(String[] args) {
int arr[][]=new int[][] {{1,2,3},{1,2,3},{1,2,3}};
for(int i=0;i<arr.length;i++)
{
for(int j=0;j<arr[i].length;j++)
System.out.print(arr[i][j]);
System.out.println();
}
}
}
/*运行结果:
123
123
123
*/
b.使用foreach语句遍历
foreach语句单独来讲
②填充替换数组元素
通过Arrays类的静态方法fill( )进行替换。
a.fill(int[ ] a,int value)
此方法用value值讲a数组中的所有元素值进行替换。
b.fill(int[ ] a,int fromIndex,int toIndex,int value)
此方法将 指定的value值分配给数组a中指定位置的元素,范围为fromIdex(包括)——toIndex(不包括)。
import java.util.Arrays;
public class First {
public static void main(String[] args) {
int arr[]=new int[] {1,2,3,4,5,6,7,8};
int arr1[]=new int[] {1,2,3,4,5,6,7,8};
Arrays.fill(arr, 8);
Arrays.fill(arr1,2,4,5);
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr[i]);
}
System.out.println();
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i]);
}
}
}
/*运行结果:
88888888
12555678
*/
③数组排序
通过Arrays类的 静态sort()方法可法 实现对数组的排序。
Arrays.sort(arr);
import java.util.Arrays;
public class First {
public static void main(String[] args) {
int arr[]= {3,5,4,7,9,6,1,2,8};
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]);
}
}
}
//结果:123456789
④数组复制
a.copyOf方法
复制数组至指定长度,若新数组长度大于原数组,则不足位用0填充(char类型用null,bool类型用false)。
语法:Arrays.copyOf(arr, int new length);
b.copyOfRange方法
将指定数组的指定长度 复制到一个新数组。
语法:Arrays.copyOfRange(arr,int fromIndex,int toIndex);
import java.util.Arrays;
public class First {
public static void main(String[] args) {
int arr[]= {3,5,4,7,9,6,1,2,8};
int arr1[]=Arrays.copyOf(arr, 10);//长度为10,不足位用0代替
int arr2[]=Arrays.copyOfRange(arr, 0, 5);//不包括第5个
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i]);
}
System.out.println();
for (int i = 0; i < arr2.length; i++) {
System.out.print(arr2[i]);
}
}
}
/*结果:
3547961280
35479
*/
⑤数组查询
a.binarySearch(Object[ ] a,Object key)
Arrays类的binarySearch方法, 使用二分搜索来搜索指定数组,返回要搜索元素的索引值。 使用前需要进行排序,否则查找结果不稳定。
b.binarySearch(Object[ ] a,int form,int to,Object key)
搜索指定范围,不包括结束处(to)。
import java.util.Arrays;
public class First {
public static void main(String[] args) {
int arr[]= {3,5,4,7,9,6,1,2,8};
Arrays.sort(arr);
int index=Arrays.binarySearch(arr, 2);
int index1=Arrays.binarySearch(arr,0,5,5);
System.out.println(index);
System.out.println(index1);
}
}
/*结果:
1
4
*/
有关于数组的基本知识就介绍到这里,以后还会慢慢补充,请期待~