1.內存中的數組
在前面的例子中,插圖有點不准確。
創建數組時(與創建字符串時一樣),會分配兩個單獨的內存塊:一個用於存儲數組(容器)本身,第二個塊用於存儲其地址的變量。下圖代表了這一澄清:
為元素數組分配的內存10
int
和int[]
存儲數組地址的變量以綠色int
顯示。
int
為了比較,存儲值的普通變量199
顯示為藍色。
這有點讓人想起在內存中存儲字符串,你不覺得嗎?
沒錯,弦樂。就像使用字符串一樣,您可以將數組變量賦值給另一個:
代碼 | 解釋 |
---|---|
|
創建一個元素數組10 int 。將值分配 4 給具有索引的單元格2 。將值分配 9 給具有索引的單元格7 。在 b 變量中,保存變量存儲的地址a 。現在 a 並b 指向內存中的同一個數組對象。在帶有索引的數組對象的單元格中,寫入存儲在單元格(存儲值)和(存儲值) 9 中的值的總和。 2 4 7 9 |
數組對象保留在原來的位置,並且a
和b
變量將相同的地址(引用)存儲到相同的對象。看圖:
2. 有關使用數組的更多詳細信息
您可以創建任何類型的元素數組。為此,只需在類型名稱後寫上方括號即可。通常,創建數組如下所示:
type[] name = new type[number];
其中type是我們將存儲在數組中的元素的類型。Name是我們將用來引用數組的變量的名稱,number是數組中的單元格數。
上面的示例是創建數組變量和數組對象的規範形式。實際上,這是兩個獨立的實體。
您可以從數組對像中單獨創建一個數組變量:
type[] name;
name = new type[number];
還有一點並非無關緊要:
例子:
代碼 | 解釋 |
---|---|
|
n 創建一個元素數組 |
|
創建一個包含203 元素的數組 |
|
|
0..99
顯示ArrayIndexOfBoundException
,這意味著索引超出了數組的範圍。
3.數組長度
正如您在前面的示例中看到的,您可以自己創建一個數組變量,然後在代碼中的某處為其賦值(對數組對象的引用)。你甚至可以這樣做:
代碼 | 解釋 |
---|---|
|
創建一個類型為的數組變量int[] 如果 a 變量小於10 ,則創建一個元素數組 10 。否則創建一個元素 數組 20 |
現在你還能用這樣的數組做什麼?你怎麼知道裡面有多少元素?
為了解決這個問題,數組有一個名為 的特殊屬性(變量)length
。您可以使用以下表達式找到數組的長度:
array.length;
這array
是數組變量的名稱,length
是數組屬性的名稱。屬性的值length
不能改變:length
屬性本身可以賦值給其他變量,但不能賦值給它(如果你試圖這樣做,程序將無法編譯)。
我們可以像這樣繼續前面的例子:
代碼 | 解釋 |
---|---|
|
創建一個類型為的數組變量int[] 如果 a 變量小於10 ,則創建一個元素數組 10 。否則創建一個元素 數組 循環遍歷數組的所有元素:從到長度 20 0 array.length - 1 |
4. Java 中關於數組的事實總結
讓我們回顧一下我們對數組的了解:
事實 1.數組由許多單元格組成。
事實 2.您可以使用其編號(索引)訪問特定單元格。
事實 3.所有細胞都屬於同一類型。
事實 4.所有單元格的初始值為 0(如果單元格存儲數字)、null
(如果單元格存儲對象引用)或false
(如果單元格存儲boolean
值)。您將在本章中了解有關默認值的更多信息。
事實 5. String[] list
只是一個變量的聲明。這不會創建容器(數組對象)本身。要使用變量,首先需要創建一個數組(容器)並將其賦值給變量。請參見下面的示例。
事實 6.當我們創建一個數組對象(容器)時,我們必須指出它有多大,即它包含多少個單元格。這是通過如下語句完成的new TypeName[n]
:
事實 7.可以使用 屬性找到數組的長度.length
。
事實 8.創建數組後,您不能更改其元素的類型或它存儲的元素的數量。
代碼 | 解釋 |
---|---|
|
s 是null list _null |
|
變量list 存儲對對象的引用:由10 元素組成的字符串數組。n 是10 |
|
現在 |
|
會拋出一個異常(程序錯誤),即程序會崩潰。list 存儲對的引用null |
|
將產生數組越界異常(程序錯誤)。 如果 a list 存儲10 元素/單元格,則有效索引為:0 1 2 3 4 5 6 7 8 9 —10 元素。 |