您的位置:首页 > 编程语言 > Java开发

Java基础知识强化63:Arrays工具类之方法源码解析

2015-09-24 16:51 736 查看
1. Arrays工具类的sort方法:

 public static  void sort(int[]  a);


底层是快速排序,知道就可以了,用空看。

2. Arrays工具类的toString方法底层:

 public static String toString(int[] a);


上面方法的底层是:

 public static String toString(int[] a) {
//a -- arr -- { 24, 69, 80, 57, 13 }

if (a == null)
return "null"; //说明数组对象不存在
int iMax = a.length - 1; //iMax=4;
if (iMax == -1)
return "[]"; //说明数组存在,但是没有元素。

StringBuilder b = new StringBuilder();
b.append('['); //"["
for (int i = 0; ; i++) {
b.append(a[i]); //"[24, 69, 80, 57, 13"
if (i == iMax)
//"[24, 69, 80, 57, 13]"
return b.append(']').toString();
b.append(", "); //"[24, 69, 80, 57, "
}
}


通过查看源码,我们知道一个原则:只要是对象,我们在使用该对象是否为null。

3. [b] Arrays工具类的binarySearch方法底层:[/b]

 public static  int binarySearch(int[]  a, int key);


使用样式:

 int[] arr = {13, 24, 57, 69, 80};
System.out.println("binarySearch:" + Arrays.binarySearch(arr, 577));


上面方法的底层是:

 public static int binarySearch(int[] a, int key) {
//a -- arr -- {13, 24, 57, 69, 80}
//key -- 577
return binarySearch0(a, 0, a.length, key);
}


追溯到binarySearch0方法的源码,如下:

 private static int binarySearch0(int[] a, int fromIndex, int toIndex,
int key) {
//a -- arr --  {13, 24, 57, 69, 80}
//fromIndex -- 0
//toIndex -- 5
//key -- 577

int low = fromIndex; //low=0
int high = toIndex - 1; //high=4

while (low <= high) {
int mid = (low + high) >>> 1; //mid=2,mid=3,mid=4
int midVal = a[mid]; //midVal=57,midVal=69,midVal=80

if (midVal < key)
low = mid + 1; //low=3,low=4,low=5
else if (midVal > key)
high = mid - 1;
else
return mid; // key found
}
return -(low + 1);  // key not found.
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: