這個問題基本上是不言自明的。我一直無法找到數組的API(除了這個Arrays,但這只是定義了一堆用於處理實際數組的靜態輔助函數)。如果沒有它的類,這似乎表明一個數組不能是Object
。數組是一個原始類型還是一個對象(或者其他的東西)?
但是,數組具有公共字段(如length
)以及它可以調用的方法(如.equals()
和.clone()
)似乎表明(非常強烈)完全相反。
原始數組的奇怪表現和行爲的解釋是什麼?作爲一個說明,我試圖在剛剛使用數組的.clone()
方法上使用「Open Implementation」Eclipse功能,希望能夠查看在何處以及如何定義此方法(因爲它表示int []從Object推翻它),但它實際上使我的整個Eclipse來凍結和崩潰...
優秀的答案!我現在明白爲什麼我現在找不到任何API或任何東西。這非常有趣,JVM在運行時自己創建這些類。最後一個問題:如果一個數組與其他對象一樣是一個類的成員,那麼初始化是如何工作的?如果你說的是準確的,[]只是類名的一部分,爲什麼他們沒有使用構造函數聲明,即new int [](2)vs new int [2]? – asteri
'int [2]'語法來自C,Java試圖接近C語言。 – irreputable
最有可能的是,jvm中有特殊的代碼來處理數組初始化,這與標準對象實例非常不同。 – Matt