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