楼主机械本科转行码农,刚开始学半个月java,前两天学到面向对象,有点难理解,所以停更了两天,现在正好用周末时间整理一下上一周的有关知识,纯小白学编程的艰难自不必说,但是普通人身处天坑专业的困境正是改变的最佳契机,所有转行的小伙伴们一起加油!
JDK中提供了一个专门用于操作数组的工具类,即Arrays类,位于java.util包中,该类提供了一系列方法来操作数组,如排序,复制,比较,填充等,使用中用户直接调用这些方法即可,降低了开发难度。
Arrays类的常用方法简介
方法 | 数组中常用格式 | 返回类型 | 说明 |
equal(array a,array b) | boolean equals(int[] a,int[] b) | boolean | 比较两个数组是否相等 sort(array) |
sort(array) | Arrays.sort(arr2) | void | 对数组的元素进行升序排序,如果要进行降序排序,可先升序再新建一个数组,把升序后的数组元素逆序赋值给新数组 即可 |
fill(array.val) | Arrays.fill(arr1,10) | void | 将指定元素赋值给数组 |
toString(array) | Arrays.toString(arr1) | String | 输出数组信息,将一个数组 转换为一个字符串 |
copyOf(array.length) | Arrays.copyOf(arr4,4) System.arraycopy(arr4,0,arr6,2,4) | 与原数组中的元素数据类型一致 | 把原数组中的数据复制到新数组中 |
binarySearch(array,val) | Arrays.binarySearch(arr3,2) | int | 查询元素值在数组中的下标 ——前提是数组必须有序!!!! |
一.比较两个数组是否相等
// boolean equals(int[] a,int[] b):判断两个数组是否相等
int[] arr1=new int[]{1,2,3,4};
int[] arr2=new int[]{1,7,5,4};
boolean isEquals=Arrays.equals(arr1,arr2);
System.out.println(isEquals);
二.输出数组信息
// String tostring(int[] a);输出数组信息,将一个数组 转换为一个字符串
System.out.println(Arrays.toString(arr1));
三.将数组所有元素赋为相同的值
//void void fill(int[] a,int val)将指定元素赋值到数组
Arrays.fill(arr1,10);
System.out.println(Arrays.toString(arr1));
四.对数组进行排序
// void sort(int[0] a); 对数组进行排序
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));
五.查询元素值在数组中的下标 ——前提是数组必须有序!!!!
如果输出为负数即表示该元素不在此数组中。
// int binarySearch(int[] a,int key);查询元素值在数组中的下标
//前提是数组必须有序!!!!
int[] arr3=new int[]{-75,-25,-1,4,8,21,36,95};
int index=Arrays.binarySearch(arr3,2);
if(index>=0){
System.out.println(index);
}else{
System.out.println("未找到");
}
六.把原数组中的数据复制到新数组中(重点)
1.如果新数组的length<原数组的length,则新数组就是原数组前面按顺序排列的length个元素
2.如果新数组的length>原数组的length,则新数组前面按顺序排列的所有元素就是原数组按顺序排列的所有元素,后面剩下的元素就是按原数组内元素的类型补充默认的初始值,比如原数组是int型,新数组就补充0,原数组是String型,新数组就补充null等
//copyOf(array.length):把原数组中的数据复制到新数组中
int [] arr4=new int[]{1,5,42,13,5,10,3,23};
int[] arr5= Arrays.copyOf(arr4,4);
int[] arr51=Arrays.copyOf(arr4,9);
System.out.println(Arrays.toString(arr51));
System.out.print("arr5:"+"[");
for (int i = 0; i < arr5.length; i++) {
if(i==arr5.length-1){
System.out.print(arr5[i]);
}else{
System.out.print(arr5[i]+" ");
}
}
3.补充:System.arraycopy使用的基本定义
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
src:原数组
srcpro:复制的起始索引
dest:目标数组
destPos:复制到目标数组的起始位置
length:复制的长度
下面用String型来演示此方法的复制过程:
String[] arr8=new String[]{"1","2","3"};
String[] arr6=new String[7];
System.arraycopy(arr8,0,arr6,2,2);
System.out.print("[");
for (int i = 0; i < arr6.length; i++) {
System.out.print(arr6[i]+" ");
}
System.out.print("]");
}
注意:①复制的长度不能超过源数组的长度,否则会报错!如果复制的长度<目标数组长度,则目 标数组中其余位置会用其同类型的数据的默认值补全,比如复制的是String型数据,则会 用null补全
②src和dest都必须是同类型或者可以进行转换类型的数组!
③所有的参数不能为负数!
④此函数不仅可以实现新数组的扩容,还可以实现自己到自己的复制:
System.arraycopy(arr8,0,arr8,1,3);
System.out.println("\n"+Arrays.toString(arr8));
目前楼主只接触过这些类型,如果还需要了解更多,请自行百度qAq...