數組在程式設計語言中是一種常見的資料結構或者說資料類型,數組中可以存儲多個資料,這些資料叫做數組元素。數組是引用類型,數組中的元素可以是任意類型的,但是一個數組中的所有元素卻必須是同一類型。
通常通過數組元素的索引來通路數組元素,包括為數組中的元素指派和取出數組中的元素。
數組初始化以後,他所占用的記憶體就固定下來了,也就是長度将不可變,即使把該數組中的資料全部清空,他所占的記憶體依舊是那麼多。
定義數組有兩種方式:類型 [] 數組名 或 類型 數組名 [],常用的是第一種。定義數組僅僅是定義了一個引用變量,還沒有具體的記憶體,需要初始化,定義數組的時候不能指定數組的長度。
數組的初始化也就是為他指定長度,如果指定長度以後沒有為數組中的元素指派,那麼系統會指定預設值。整數類型預設是0,浮點類型預設0.0,char類型預設\u0000,boolean類型預設false,引用類型預設的是null,null也是一個值。
數組初始化分為靜态初始化和動态初始化,靜态初始化指的是初始化的時候由程式員顯示的為數組元素指定初始值,系統來決定長度;動态初始化指的是初始化時由程式員來指定數組的長度,系統配置設定初始值,靜态初始化和動态初始化不要同時使用。
執行靜态初始化時,為元素指定的初始值類型必須與new後的類型相同或者是它子類的執行個體,而new後的類型要與定義數組時的類型相同或者是定義數組時的類型的子類。
靜态初始化還有一種簡化的方式,即:不需要new,直接在等号後邊用大括号并給元素指派,這裡給元素指派時一樣要遵循類型符合的原則。
java中通過索引來通路數組元素,索引預設從0開始,最後一個是數組長度減1。如果通路數組時指定的索引值小于0或大于數組長度減1,則編譯通過但是會運作時出現下标越界異常。
數組中提供了length屬性,可以通過這個屬性來獲得數組的長度。
除開可以根據數組的長度循環周遊數組中的每個元素以外,jdk1.5以後還提供了增強for循環來周遊數組和集合,增強for循環foreach在循環周遊的時候不需要知道數組的長度,也不需要數組索引。例如:for(元素類型 接收元素的變量名:要周遊的數組或集合名)
數組是一種引用類型的資料,數組元素和數組變量在記憶體中是分開存放的,數組變量隻是一個引用,存放在棧中,而數組元素存放在堆中。
如果一個數組确定不再需要使用了,可以把變量指派為null,也就切斷了相關的引用,那麼垃圾回收機制就會把該數組回收。
隻要類型互相相容,可以讓一個數組變量指向另一個實際的數組,這個時候可能會産生數組長度可變的錯覺,而實際上并不是數組長度變了,隻是引用改變了而已。