1.toString方法,将数组转换为字符串
public class Demo4_Array {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr= {77,22,13,46,58,26,99};
System.out.println(Arrays.toString(arr));//将数组转换为字符串
}
}
运行结果为:
[77, 22, 13, 46, 58, 26, 99]
下面我们看一下Arrays类中重写的toString方法:
public static String toString(int[] a) {
if (a == null)//如果传入的数组为null
return "null";//直接返回为null
int iMax = a.length - 1;//imax是最大索引
if (iMax == -1)//如果数组中没有元素
return "[]";//就返回为[]
StringBuilder b = new StringBuilder();//线程不安全,效率高
b.append('[');//将[添加到字符串缓冲区
for (int i = 0; ; i++) {//遍历数组,判断语句没有加默认为ture
b.append(a[i]);//把第一个元素添加进字符串缓冲区
if (i == iMax)//当i等于最大索引
return b.append(']').toString();//把]添加进字符串缓冲区,然后在转换为字符串并返回
b.append(", ");//如果if条件不满足,把,加进字符串缓冲区
}
}
2.排序-sort方法
import java.util.Arrays;
public class Demo4_Array {
public static void main(String[] args) {
Arrays.sort(arr);//快速排序
System.out.println(Arrays.toString(arr);
}
}
运行结果为:
[13, 22, 26, 46, 58, 77, 99]
3.二分查找-binarySearch
import java.util.Arrays;
public class Demo4_Array {
public static void main(String[] args) {
int[] arr1= {11,22,33,44,55,66,77};
System.out.println(Arrays.binarySearch(arr1, 22));
System.out.println(Arrays.binarySearch(arr1, 66));
System.out.println(Arrays.binarySearch(arr1, 88));//如果找不到该值,就返回负的插入值-1
}
}
运行结果为:
1 5 -8
下面我们看一下Arrays类中的binarySearch方法:
public static int binarySearch(int[] a, int key) {
return binarySearch0(a, 0, a.length, key);
}
private static int binarySearch0(int[] a, int fromIndex, int toIndex,
int key) {
int low = fromIndex;//最小索引
int high = toIndex - 1;//最大索引,数组长度-1
while (low <= high) {//最小索引小于等于最大索引可以循环判断
int mid = (low + high) >>> 1;//求出中间索引值,(最小+最大)/2
int midVal = a[mid];//通过中间索引获取中间值
if (midVal < key)//中间索引对应的值小于查找的值
low = mid + 1;//最小索引变化
else if (midVal > key)//中间索引对应的值大于查找的值
high = mid - 1;//最大索引变化
else//否则就是找到了,返回索引位置
return mid; // key found
}
return -(low + 1); // key not found.//没找到就-的插入点-1
}