我開始學習Java作爲我的計算機科學學校的作業都需要這種語言,我喜歡的語言。但是,我已經看到Java數組不可擴展 - 也就是說 - 在使用它們之前必須聲明它們的長度,並且不能進一步更改。
我想知道到底爲什麼?爲什麼Java語言設計者選擇創建數組呢?我想這是出於性能考慮,但我不確定。
謝謝大家提前。
我開始學習Java作爲我的計算機科學學校的作業都需要這種語言,我喜歡的語言。但是,我已經看到Java數組不可擴展 - 也就是說 - 在使用它們之前必須聲明它們的長度,並且不能進一步更改。
我想知道到底爲什麼?爲什麼Java語言設計者選擇創建數組呢?我想這是出於性能考慮,但我不確定。
謝謝大家提前。
我想知道到底爲什麼?爲什麼Java語言設計者選擇創建數組呢?我想這是出於性能考慮,但我不確定。
他們設計的基元和數組儘可能地簡單和低層次。他們沒有做任何特殊的事情,陣列根本不使用面向對象的設計。即它們只有少數有用的方法,沒有特定於陣列。
想法是,你會編寫更高級別的集合,如列表使用這些低級別的結構。
Java數組幾乎和C數組一樣簡單。 C數組只是一個分配的內存區域,其中n是n * m個字節,其中n是數組中元素的數量,m是存儲單個元素所需的字節數。
然後只有這裏加入的Java是length
,可能是toString()
。所有其他功能可能會導致陣列性能無效。集合做得非常好。此外,集合是用java編寫的,這使得它們可移植。
爲什麼Java語言設計者選擇創建數組?
數組是該語言提供的編程數據結構之一。如果你使Array也可擴展,它將變得類似於ArrayList。
所以,我想有兩個原因:
爲什麼downvoted?任何推理? – Azodious
對不起,我真的很抱歉。現在Upvoted。 – rodrigoalves
數組佔用連續的內存位置,編譯器無法確定數組末尾的位置是否可以添加到數組中。
這就是爲什麼很多人使用的LinkedList或ArrayList中
這個問題是answred
參見:原語。 – keyser
很難爲無限數組分配足夠的內存 –
爲什麼C數組也不可擴展? –