Java基础知识强化63:Arrays工具类之方法源码解析
2015-09-24 16:51
736 查看
1. Arrays工具类的sort方法:
底层是快速排序,知道就可以了,用空看。
2. Arrays工具类的toString方法底层:
上面方法的底层是:
通过查看源码,我们知道一个原则:只要是对象,我们在使用该对象是否为null。
3. [b] Arrays工具类的binarySearch方法底层:[/b]
使用样式:
上面方法的底层是:
追溯到binarySearch0方法的源码,如下:
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. }
相关文章推荐
- Java Web - 日志-log4j(二)--配置文件说明
- java:axis2环境下获取方法参数名的另一种方法
- 探秘Java虚拟机 gc的监控
- java 之 继承
- java 多线程全部执行完后再继续进行后门的方法
- Java Web - 日志-log4j(一)--写到控制台、写到log文件
- Spring压缩包目录说明
- Java GC 日志详解(一图读懂)
- spring声明式事务处理(hibernate)
- java构造器
- Java synchronized 介绍
- J2ee开发环境搭建之(五)eclipse集成MySQL
- 默认情况下,struts2是无法处理以.do为后缀的请求url的
- Java类加载器
- Java基础知识强化62:Arrays工具类之概述和使用
- Java追加文件内容的三种方法
- SpringMVC、MyBatis声明式事务管理
- 简单身份证合法性验证JAVA
- Eclipse+NDK+adt+cdt开发环境问题解决
- window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法