1. 程式人生 > >java中數組的內容

java中數組的內容

style 類型 初始 組元 對數 保存 image char 現在

今天了解了一下java中數組的內容。

數組是用於存儲一組有序數據的集合,可以通過數組來保存任何相同數據類型的數據,而數組本身屬於引用類型。

以一維數組為例,數組的聲明寫成 數據類型[] 數組名。通過這條語句僅僅聲明了一個數組變量,並沒有創建一個真正的數組,也無法確定數組的長度,這時候數組還不能被訪問。在聲明了數組之後,就要具體規定數組的大小,給數組分配內存空間,可以通過new操作符來顯示創建一個數組,在定義並用運算符new為數組分配空間後,才可以引用數組中的每個元素。當然數組的聲明和數組的大小分配可以放到一起完成,即 type [] arr_name = new type[length];接下來就是對數組進行初始化,在java中,數組的初始化有兩種,靜態初始化和動態初始化。(而在java中,為了保證安全性,防止內存缺失,為已創建的數組提供了默認化初始機制,在創建成功一個數組後,將完成三個動作:1.創建一個數組對象 2.在內存中給數組分配存儲空間 3.給數組的元素初始化一個相應的數據類型的默認值。)所謂靜態初始化就是在定義數組的時候就對數組進行初始化,例:int k[]={1,3,5,7,9};動態初始化就是將數組的定義和空間分配與給數組元素賦值分開,例:char ch=new char[3];ch[0]=a;ch[1]=b;ch[2]=c;。

下面講一下數組的內存空間和內存分配。先介紹java在內存分配時會涉及到的區域:寄存器,棧(存放基本類型和對象的引用,但對象本身不存放在棧中,而是存放在堆中),堆(存放用new產生的數據)。

首先介紹簡單數據類型數組從定義到初始化的內存變化過程。在聲明數組的時候,系統會給這個數組分配用於存放這個數組的內存空間,它會在堆內存空間中給數組分配一個空間用於存放數組引用變量,在棧內分配空間存入數組對象的引用;在創建簡單數據類型的數組的時候,系統會分配合適的堆空間用來存放該種數據類型數據的內存空間,並且將這個數組的各個元素賦一個和數組類型匹配的初值;當對數組進行初始化時,會將值賦給對應的各個數組元素。

如圖:

技術分享圖片

引用數據類型數組從定義到初始化內存變化的過程。引用類型數組的定義和簡單數據類型數組的定義基本相同;創建的時候也是首先給數組元素分配內存空間,然後賦給這些數組元素一個默認的初始值null;在進行初始化的時候,因為數組本身也是引用類型,而現在的數組元素也是引用類型,所以數組元素所引用的對象也要分配內存空間。

如圖:

技術分享圖片

java中數組的內容