Q.为什么第2行&第4行不要例外,而第1行第3行?Arrays.binarySearch在不同类型的对象数组中抛出异常?
Object arr[]={1,2,5,"ABC",6};
Arrays.sort(arr);//line 1
Arrays.binarySearch(arr,5);//line 2
Arrays.binarySearch(arr,"ABC");//line 3
Arrays.binarySearch(arr,6);//line 4
Q.为什么第2行&第4行不要例外,而第1行第3行?Arrays.binarySearch在不同类型的对象数组中抛出异常?
Object arr[]={1,2,5,"ABC",6};
Arrays.sort(arr);//line 1
Arrays.binarySearch(arr,5);//line 2
Arrays.binarySearch(arr,"ABC");//line 3
Arrays.binarySearch(arr,6);//line 4
它有如果binarySearch()
方法实际上是尝试比较两个无与伦比的对象做比较的。
在第2行和第4行,您很幸运能够找到正在搜索的元素,而不会遇到不兼容对象,并且不会引发ClassCastException
。
实际上,在您的编辑中(数组为{1,2,5,"ABC",6}
之前),第2行是唯一可用的。
从Arrays#sort
javadoc(emphasys矿):
抛出:
- 如果的fromIndex> toIndex或(可选)如果数组元素的自然顺序被发现违反可比合同
ArrayIndexOutOfBoundsException - 如果fromIndex < 0或toIndex> a.length
ClassCastException - 如果数组包含不可相互比较的元素(例如,字符串和整数)。
从Arrays#binarySearch
javadoc(emphasys矿):
抛出
ClassCastException - 如果检索关键字没有可比性到所述阵列的所述元件。
注意,在第1行和你的代码3,"ABC"
也不"6"
与1,2或5