以前很早就聽說過java是單繼承的類結(jié)構(gòu),即一個類只能繼承一個直接父類,并且所有的類都直接或間接繼承于java.lang.Object類。對于這一點,一直接受,并且在jdk文檔里看到的類繼承層次結(jié)構(gòu)也的確是這樣。后來,無意中看到一個問題,問數(shù)組是不是繼承自O(shè)bject類,這一下還給問糊涂了,因為數(shù)組在java里是對象,不過像這種繼承結(jié)構(gòu)我還一直未看到呢?后來,寫了點代碼做了一個小測試,如下:
System.out.println(new int[1].getClass().getName()); 發(fā)現(xiàn)int型數(shù)組的類是:[I 比較奇怪,是吧,并且代碼顯示:
System.out.println(new int[1].getClass().getSuperClass().getName());
它的直接父類就是java.lang.Object類,即所有類的根類。根據(jù)這些,做了一個總結(jié):
第一種情況,當(dāng)數(shù)組元素是基本類型時:
int [] 對應(yīng)class [I
char [] 對應(yīng)class [C
byte [] 對應(yīng)class [B
short [] 對應(yīng)class [S
long [] 對應(yīng)class [J
float[] 對應(yīng)class [F
double [] 對應(yīng)class [D
boolean [] 對應(yīng)class [Z
第二種情況,當(dāng)數(shù)組元素是對象時:
統(tǒng)一為 [L java.lang.Object