Java 中數組標識符實際是指向堆內存中真實數組對象的引用(句柄)。數組對象創建方式有二:
int[] a = new int[5]; 默認初始化為 0。Weeble[] d = {new Weeble(), new Weeble()}; 集合初始化語法。唯一可訪問的字段是只讀的 length,表示容量而非實際元素數。訪問元素只能用 [] 語法。
Weeble[] a = d; // a 和 d 指向同一堆對象
a = new Weeble[] {new Weeble(), new Weeble()}; // Java 1.1 動態初始化語法
賦值只是複製引用,a 和 d 成為別名,修改任一可見元素變化會影響另一視圖。
| 特性 | 對象數組 | 基本類型數組 |
|---|---|---|
| 存儲內容 | 引用(句柄) | 實際數值 |
| 默認初始值 | null | 0 / false / '\0' |
| 效率 | 間接訪問,稍慢 | 直接訪問,極快 |
集合類(Vector 等)只能存對象引用。存基本類型需用包裝類(Integer、Double),這帶來:
結論:若追求極致性能且大小可預估,基本類型數組是最佳選擇。若需動態擴容,權衡下才用包裝類+集合。Java 當時缺乏 C++ 模板機制,無法為每種基本類型生成專用 Vector,這正是泛型和專用集合(如 IntArrayList)後來解決的問題。