掌握Arrays类的常用方法
Arrays:此类包含用来操作数组(比如排序和搜索)的各种方法。
从以下版本开始: 1.2
常见的5个方法
1:binarySearch()二分搜索法
2:sort() 数组排序
3:fill() 数组填充
4:copyOf() 数组拷贝
int[] newArr = Arrays.copyOf(arr, arr.length);
在堆中又开辟了一块新的空间,2个数组
int[] newArr = arr; //数组的地址符赋值 两个变量同时指向一块堆内存空间 1个数组
5:toString() 字符串拼接数组
1、二分搜索法
二分搜索法(折半查找) 前提是这个数组必须是有序的
Arrays.binarySearch()
注意:二份搜索法:根据元素查找下标
找到返回当前元素的下标,没有找到返回负数
public static void myBinarySearch(int[] arr,int ele){
//确保数组有序
Arrays.sort(arr);
//int[] arr = {-10,1,10,20,45,56,88};
//定义开始和结尾的2个下标
int start = 0;
int end = arr.length;
int index =-1;
//保证开头下标不能超过结尾下标,否则数组就会越界
int count = 0;
while(start<=end){
count++;
int mid = (start+end)>>>1; //折半点
//如果目标元素和中间元素相等
if(arr[mid]==ele){
//把中间元素的下标赋值给index,代表找到这个元素的下标
index = mid;
//后面就不用比较了
break;
//如果目标元素比中间元素的值大
}else if(ele>arr[mid]){
//去数组的右边来找 并且,start变成mid+1的值,end值不变
start = mid+1;
//如果目标元素比中间元素的值小
}else{
//去数组的右边来找 并且,end变成mid-1的值,start值不变
end = mid-1;
}
}
System.out.println(count);
if(index!=-1){
System.out.println("元素:"+ele+"的下标是:"+index);
}else{
System.out.println("不存在此元素");
}
}
public static void main(String[] args) {
int[] arr = {10,20,45,-10,56,1,88}; //乱序数组
myBinarySearch(arr,56);
Arrays.sort(arr); //排好序的数组
//{-10,1,10,20,45,56,88,100}
int index = Arrays.binarySearch(arr, 500);
System.out.println(index);
}
}
2、调用Arrays提供的sort方法
Arrays.sort(arr)
public static void main(String[] args) {
int[] arr = {10,-100,45,88,99,22,14};
System.out.println("最小值:"+arr[0]);
System.out.println("最大值:"+arr[arr.length-1]);
//打印数组
System.out.println(Arrays.toString(arr));
3、fill() 数组填充
Arrays.fill(arr, 0);
System.out.println(Arrays.toString(arr));
4、copyOf() 数组拷贝
int[] newArr = Arrays.copyOf(arr, arr.length*2);
int[] newArr = arr; //数组的地址符赋值 两个边路同时指向一块堆内存空间
System.out.println("新数组:"+Arrays.toString(newArr));
5、toString() 字符串拼接数组
调用toString方法 这个不是遍历数组,这个是把数组中每个元素用字符串拼接起来,打印在控制台
System.out.println(arr);
System.out.println(Arrays.toString(arr));