在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ JAVA 數(shù)組排序方法,Arrays.sort()方法疑問?

JAVA 數(shù)組排序方法,Arrays.sort()方法疑問?

此API規(guī)定實(shí)體bean要實(shí)現(xiàn)comparable接口并重寫compareTo方法,為什么不將API改為Arrays.sort(Compatable[] com)呢?

回答
編輯回答
別硬撐

寫成Compatable[]的參數(shù),sort方法就只能接收對象為參數(shù),而簡單類型就不能用了,如

int [] a ={1,2,3,6,4,3,23,5,6,7,9};

Arrays.sort(a);

//a = [1, 2, 3, 3, 4, 5, 6, 6, 7, 9, 23]
2018年6月24日 05:24
編輯回答
失心人

真正的原因是因?yàn)镴ava數(shù)組的一個特性導(dǎo)致不得不這樣設(shè)計(jì)。簡單來說,Java數(shù)組的運(yùn)行時類型不是由其元素類型決定,而是由其實(shí)例化時的類型決定的。

比如下面這個數(shù)組:

Object[] arr = {
    "hello", "world"
};

它的實(shí)際類型就是Object[](大括號的簡寫法相當(dāng)于Object[] arr = new Object[] {...};,因此其實(shí)例化類型為Object[])。雖然它里面的元素全部都是字符串,按照直覺你可能會覺得可以把它轉(zhuǎn)換為String[]數(shù)組,但其實(shí)不然,下面的轉(zhuǎn)換在運(yùn)行時將會報(bào)錯:

String[] arr2 = (String[]) arr;
注:如果反過來,將一個String[]數(shù)組轉(zhuǎn)換為Object[]數(shù)組則是可行的,因?yàn)榍罢呤呛笳叩淖宇愋汀?/blockquote>

所以這會導(dǎo)致什么問題?如果Arrays.sort()聲明為接收Comparable[]數(shù)組,那么就要求程序員在使用的時候必須一開始就為該數(shù)組實(shí)例化為一個Comparable[]數(shù)組或其兼容數(shù)組,而不能等到調(diào)用sort()方法的時候再臨時轉(zhuǎn)換,因?yàn)榫拖袂懊娴睦幽菢樱@種轉(zhuǎn)換很有可能會失敗。

2018年2月15日 09:26