Arrays源码理解
1.equals
?
private static int binarySearch0(int[] a, int fromIndex, int toIndex,int key) { int low = fromIndex; int high = toIndex - 1; while (low <= high) { int mid = (low + high) >>> 1; 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.}
??? 这个移位很有特色,本来我怀疑low+high会超出范围,但是0111 1111 1111 1111 + 0111 1111 1111 1111 = 1111 1111 1111 1110 无符号移位 0111 1111 1111 1111,结果正好正确。,当然,如果写成int sum =(low+high); int midVal=sum>>>1.就错了。
??? 对了,这个方法只能查有序的数组,无序的查不到。
5.sort()???? 看了一会没看懂,网上说:int,float等原型数据的数组采用快速排序,对Object对象数组采用归并排序 。所以等到时总结排序的时候一起理解一下。
???