數組是能夠保存一組相同數據類型的一種數據結構 。數組必須有固定的長度, 且不能修改長度 ,數組擁有邊界檢查, 嘗試獲取不在數組範圍內的值時, 會拋出ArrayIndexOutOfBoundsException異常 。數組是引用類型, 會存放在堆內存中。 對象數組和基本數據類型數組在使用上是相同的, 區別是對象數組保存的是引用, 基本類型數組保存基本類型的值。算法
數組是存取效率最高的數據結構 。數組適合添加、查找、 遍歷 操做,不適合刪除、插入操做。數組
動態數組指的是一個數組的長度能夠動態進行擴充, 目的是在數組元素存儲滿後能夠繼續存儲, 以達到「無限」長度。 數據結構
動態數組本質是從新建立一個數組, 長度在原數組基礎上擴充, 放棄原數組,把原數組中的元素複製到新數組。性能
動態數組變相解決了數組固定長度帶來的問題 ,但動態數組若是頻繁擴充必然會帶來性能的降低, 產生垃圾數組對象 spa
動態數組的實現原理被使用在ArrayList、 Vector 的集合類中 。
實現動態數組的步驟:
1.在添加元素時判斷數組是否有空餘空間;
2.若是有空餘空間,則直接添加元素,不須要擴充數組;
3.若是沒有空餘空間,轉到第4步;
4.肯定新數組的擴容算法,計算出擴容後新數組的長度;對象
擴容算法 a.擴容二分之一:length*3/2+1 b.翻倍:length*2
5.根據擴充後的長度建立新數組;
6.把原數組中的數據複製中新數組中 。
內存