Arrays常用方法源码

public static String toString(int[] a):

int[] arr = {24,69,80,57,13} ;
System.out.println(Arrays.toString(arr)) ;

Arrays的toString(int[] arr)的源码
Java面向对象的原则:
实际开发中有对象存在,一定要给对象做非空判断!
//arr=a={24,69,80,57,13}
public static String toString(int[] a) {
if (a == null)//判断数组对象为空
return “null”;//当前对数组对象为空
int iMax = a.length - 1;//a = arr.length-1 = 4 ;
if (iMax == -1) //数组对象不为空,但是没有数据
return “[]”;//返回[]

    //数据对象不为空,并且有数据:24, 69,80,57,13
    StringBuilder b = new StringBuilder();//创建一个字符串缓冲区
    b.append('[');//拼接了左中括号
    for (int i = 0; ; i++) {
        b.append(a[i]);//字符串缓冲区对象.append(arr[i])
        if (i == iMax)//i==4    
            return b.append(']').toString(); //13]
        b.append(", ");//没有取到最大索引:24, 69, 80, 57, 
    }
}

//排序后的
[13, 24, 57, 69, 80]
public static int binarySearch(int[] a, int key)

binarySearch(int[] arr,int key)的源码
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[] a = arr       {13, 24, 57, 69, 80} 
      //fromIndex = 0 从指定的索引开始搜索
      //toIndex=arr.length = 5
      //int key  577
    int low = fromIndex; //low = 0      int min 
    int high = toIndex - 1;// high = arr.length-1 = 4 ;     int max 

    while (low <= high) {                               {13, 24, 57, 69, 80}
        int mid = (low + high) >>> 1;    int mid = (0+4)>>>1    // mid =2 ,mid=3,mid=4
        int midVal = a[mid];                                    //int mindVal= arr[mid] = 57或者 69 或者80

        if (midVal < key)       //if(midValue < key = 577)
            low = mid + 1;                                          //low=min = mid+1   =3 或者 4 , 或者5
        else if (midVal > key)
            high = mid - 1;
        else
            return mid; // key found                //midVal ==value return mid ;返回中间索引
    }
    return -(low + 1);  // key not found.               return -(low+1)=-(5+1) = -6  //找不到这个值
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值