public class Demo03 {
//Arrays类操作数组元素
public static void main(String[] args) {
int[] nums = {56,36,78,12,95,40,33};
System.out.println("数组排序前:");
// for(int a : nums){
// System.out.print(a+" ");
// }
// System.out.println();
System.out.println(Arrays.toString(nums));
//对数组进行升序排序,可以写冒泡排序代码,也可以直接使用Arrays类中的sort()方法进行排序
//Arrays.sort(数组名);
Arrays.sort(nums);
System.out.println("数组排序后:");
// for(int a : nums){
// System.out.print(a+" ");
// }
// System.out.println();
System.out.println(Arrays.toString(nums));
System.out.println("--------------------------------------------------------------");
int[] nums1 = {11,22,33,44,55};
int[] nums2 = {11,22,33,55,44};
//比较两个数组是否相同
//boolean Arrays.equals(数组名1,数组名2); 如果两个数组中的元素个数,对应下标上的元素值相同,返回true,否则返回false
boolean result =Arrays.equals(nums1,nums2);
System.out.println("两个数组相同:"+result);
System.out.println("--------------------------------------------------------------");
int[] nums3 = {11,56,99,88,43,61,25};
//将数组转换为字符串
//String Arrays.toString(数组名);
// String string =Arrays.toString(nums3);
// System.out.println(string);
System.out.println(Arrays.toString(nums3));
}
}
Arrays类操作数组元素
升序排序
对数组进行升序排序,可以写冒泡排序代码,也可以直接使用Arrays类中的sort()方法进行排序
Arrays.sort(数组名);
比较数组是否相同
比较两个数组是否相同
boolean Arrays.equals(数组名1,数组名2); 如果两个数组中的元素个数,对应下标上的元素值相同,返回true,否则返回false
将数组转化为字符串输出
将数组转换为字符串
String Arrays.toString(数组名);
String string =Arrays.toString(nums3);
System.out.println(string);
将指定值分配到数组指定位置
static void fill(int[] a, int val):将指定的 int 值分配给指定 int 型数组的每个元素。
Arrays.fill(nums1,666);
System.out.println(Arrays.toString(nums1));
static void fill(int[] a, int fromIndex, int toIndex, int val):将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。注意:包含fromIndex的元素,不包含toIndex的元素
Arrays.fill(nums2,2,5,99);
System.out.println(Arrays.toString(nums2));
复制数组
复制数组
int[] nums = {11,22,33,44,55,66,77,88,99,100};
System.out.println(Arrays.toString(nums));
static int[] copyOf(int[] original, int newLength) : 复制指定的数组,截取或用 0 填充(如有必要),以使副本具有指定的长度。
复制数组的长度比原来数组长度小
int[] newNums1 =Arrays.copyOf(nums,3);
System.out.println(Arrays.toString(newNums1));
复制数组的长度与原来数组长度相同
int[] newNums2 =Arrays.copyOf(nums,10);
System.out.println(Arrays.toString(newNums2));
复制数组的长度比原来数组长度大
int[] newNums3 =Arrays.copyOf(nums,15);
System.out.println(Arrays.toString(newNums3));
static int[] copyOfRange(int[] original, int from, int to) :将指定数组的指定范围复制到一个新数组。注意:包含开始下标的元素值,不包含结束下标的元素值
int[] newNums4 =Arrays.copyOfRange(nums,2,5);
System.out.println(Arrays.toString(newNums4));
注意:复制数组的时候,开始索引值不能超过数组下标的范围值,结束索引值可以,超过之后,复制得到的新的数组剩余元素用默认值替代
int[] newNums5 =Arrays.copyOfRange(nums,2,15);
System.out.println(Arrays.toString(newNums5));
除了上面的Arrays类中的copyOf()方法和copyOfRange()方法可以复制数组,System类中也有一个方法可以复制数组
/*
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
*/
int[] a = {10,20,30,40,50,60,70,80,90};
int[] b = new int[10];
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));
System.arraycopy(a,1,b,4,3);
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));
}
查找数组中的元素
int[] nums = {15,66,23,66,78,91,66,45,33,20,80,41,55};
System.out.println(Arrays.toString(nums));
static int binarySearch(int[] a, int key):使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。
使用Arrays类中查找数组元素的方法之前,要对数组进行排序,否则不能保证查找结果的正确性
Arrays.sort(nums);
System.out.println(Arrays.toString(nums));
int index1 =Arrays.binarySearch(nums,91);
System.out.println("你要查找的元素91在数组中的下标:"+index1);
int index2 =Arrays.binarySearch(nums,66);
System.out.println("你要查找的元素66在数组中的下标:"+index2);
如果要查找的元素在数组中不存在,返回一个负值
int index3 =Arrays.binarySearch(nums,666);
System.out.println("你要查找的元素666在数组中的下标:"+index3);
在指定的下标范围区间查找元素,如果有元素,返回其下标值,否则返回一个负值
static int binarySearch(int[] a, int fromIndex, int toIndex, int key):使用二分搜索法来搜索指定的 int 型数组的范围,以获得指定的值。注意:查找范围包含开始下标元素,不包括结束下标元素值
int index4 =Arrays.binarySearch(nums,1,7,66);
System.out.println("你要查找的元素66在下标为1~7的范围内的位置是:"+index4);//得到的结果是一个负值
int index5 =Arrays.binarySearch(nums,1,8,66);
System.out.println("你要查找的元素66在下标为1~8的范围内的位置是:"+index5);//7