为了加深印象做一篇笔记。
数组也有对应的增强for语句,语法结构如下:
for(声明变量 :数组名){
…
}
需要注意的是,必须新声明一个变量,使用声明过的变量是不可以的。
//打印数组的所有元素
for(int i : array){
System.out.println(i) //i依次取数组array每一个元素的值
}
toString
方法原型:
public static String toString(数组类型 数组名)
所以toSrting方法可以直接通过类名Arrays调用,可以提取目标数组所有元素,并按顺序转化为字符串
int data[]={1,4,7,2,5,8}
System.out.println(Arrays.toString(data));
将会打印为[1,4,7,2,5,8]
arraysCopy
方法原型:
public static void arraycopy(sourceArray, int index1, copyArray,int index2, int length)
包含在System类里
int a[]={1,2,3,4,5};
int b[];
int c[]={9,8,7,6,5,4,3,2,1};
b=new int[5];
System.arraycopy(a,0,b,0,a.length);
System.arraycopy(a,1,c,0,3);//从下标1开始3个元素
运行后
b :[1, 2, 3, 4, 5]
c :[2, 3, 4, 6, 5, 4, 3, 2, 1]
将源数组sourceArray从下标 index1开始共length个元素复制到数组copyArray之中,copyArray从下标index2开始依次存放复制过来的元素。
需要注意的是,如果length超出了copyArray的长度就会发生异常。
copyOf
方法原型:
public static 数组类型 copyOf(数组类型 sourceArray ,int newLength )
包含在Arrays类中
int[] a={1,2,3,4,5};
int [] b=Arrays.copyOf(a,10);
运行后 b: [1, 2, 3, 4, 5, 0, 0, 0, 0, 0]
把源数组sourceArray从下标0开始的newLength个元素复制到一个新的数组中,并返回这个新数组,新数组的长度为newLength
需要注意的是如果newLength大于sourceArray的长度,超出的元素取默认值。
copyOfRange
方法原型:
public static 数组类型 copyOfRang(数组类型 original,int from ,int to)
包含在Arrays类中
int[] a={1,2,3,4,5};
int [] b=Arrays.copyOfRange(a,3,10);
运行后 b :[4, 5, 0, 0, 0, 0, 0]
把参数original指定的数组从下标0到下标(to-1)(数组original的第to个元素)
复制到一个新的数组中,新数组长度为to-from。如果to的值大于数组数组original的长度,那么超出部分取默认值。
sort
方法原型:
public static void sort(数组类型 array)
包含在Arrays类中,可以把数组array按升序排序
方法原型:
public static void sort(数组类型 array, int start, int end)
包含在Arrays类中,可以把参数array中下标start至下标end-1的元素(第end个元素)按升序排序。
int[] a={10,2,30,45,5};
int [] b={9,4,6,20,11,12};
Arrays.sort(a);
Arrays.sort(b,0,3);
运行之后
a :[2, 5, 10, 30, 45]
b :[4, 6, 9, 20, 11, 12]
binarySearch (二分查找)
方法原型:
public static int binarySearch(数组类型 array, 类型 target)
包含在Arrays类中
判断参数target指定的数据是否在参数array指定的数组当中,如果target和数组array中的某个元素相同,该方法就返回该元素的索引(下标),否则返回一个负数。
需要注意的是array必须是已排序好的数组。
int [] b={9,4,6,20,11,12};
Arrays.sort(b);
int x=Arrays.binarySearch(b,20);
if(x>=0){
System.out.println(x); //输出索引
}