读书人

Arrays源码懂得

发布时间: 2012-11-08 08:48:11 作者: rapoo

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对象数组采用归并排序 。所以等到时总结排序的时候一起理解一下。


???

读书人网 >编程

热点推荐