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