articles
等級 15

Java數組

在 Random-TW 群組發布

陣列

數組是一種儲存相同類型值的資料結構。使用整數索引存取單一數組元素。例如,如果 a 是整數數組,則表達式 a[i] 的值等於數組中的第 i 個整數。 Java 陣列 - 1數組的宣告如下:首先指明數組的類型,即數組中包含的元素的類型,後面是一對空方括號,然後是變數的名稱。例如,以下是聲明由整數組成的陣列的方法:
int[] a;
但是,該語句僅聲明了一個變量а,而沒有使用實際的數組對其進行初始化。要建立數組,您需要使用運算符new
int[] a = new int [100];
此運算子建立一個包含 100 個整數的陣列。該數組的元素編號為 0 到 99(而不是 1 到 100)。建立後,可以使用循環等方式填入陣列。
int[] а = new int[100];
for (int i = 0; i < 100; i++)
 a[i] = i; //Заполняет массив числами от 0 до 99
如果嘗試а [100]透過建立 100 個元素的陣列來存取某個元素(或索引超出 0 到 99 範圍的任何其他元素),則程式將終止,因為會發生陣列索引超出範圍異常。若要計算數組中元素的數量,請使用數組名稱方法.length。例如,
for (int i = 0; i < a.length; i++, System.out.println(a[i]));
一旦創建了數組,就不可能更改其大小(當然,您可以更改其各個元素)。如果在程式執行過程中需要經常更改數組的大小,最好使用另一種稱為數組清單的資料結構。數組可以透過兩種方式聲明:
int[] a;
or
int a[];
大多數 Java 程式設計師喜歡第一種樣式,因為它更清楚地將陣列類型int [](整數陣列)與變數名稱分開。

數組初始值設定項和未命名數組

Java 具有同時建立陣列並對其進行初始化的功能。下面是這種語法結構的一個例子:
int[] smallPrimes = {2, 3, 5, 7, 11, 13};
請注意,在這種情況下不需要使用運算符new。此外,您甚至可以初始化一個未命名的陣列:
new int[] {16, 19, 23, 29, 31, 37}
該表達式為新數組分配內存,並用大括號中指定的數字填充它。在這種情況下,計算它們的數量,並相應地確定數組的大小。這種語法結構可以方便地用於重新初始化數組,而無需建立新變數。例如,表達式
smallPrimes = new int{17, 19, 23, 29, 31, 37};
是一個縮短的表達式
int[] anonymous = {17, 19, 23, 29, 31, 37};
smallPrimes = anonymous;
您可以建立一個大小為零的陣列。當編寫一個計算結果為空的陣列的方法時,這樣的陣列非常有用。零長度數組聲明如下:
new тип Элементов[]
請注意,這樣的陣列並不等同於物件null

複製數組

一個數組可以複製到另一個數組,但兩個變數將引用同一個數組。
int[] luckyNumbers = smallPrimes;
luckyNumbers[5] = 12; //Теперь элемент smallPrimes[5]также equals 12
結果如圖所示。3.1. 如果需要將一個數組的所有元素複製到另一個數組,則應使用類別中的 arraycopy 方法System。它的呼叫看起來像這樣:
System.arraycopy(from, fromlndex, to, tolndex, count);
該數組to必須足夠大以包含要複製的所有元素。 Java 陣列 - 2
圖3.1。複製數組
例如下面所示的算子,其結果如圖所示。3.2、建立兩個數組,然後將第一個數組的最後四個元素複製到第二個數組中。複製從來源數組中的第二個位置開始,複製的元素從第三個位置開始放置到目標數組中。
int[] smallPrimes = {2, 3, 5, 7, 11, 13};
int[] luckyNumbers = {1001, 1002, 1003, 1004, 1005, 1006, 1007};
System.аrrаусору(smallPrimes, 2, luckyNumbers, 3, 4);
for (int i = 0; i < luckyNumbers.length; i++)
System.out.println(i + ": " + luckyNumbers[i]);
執行這些語句會產生以下結果。
0: 1001
1: 1002
2: 1003
3: 5
4: 7
5: 11
6: 13
Java 陣列 - 3
米。3.2. 複製數組元素
Java 中的陣列與 C++ 中的陣列有顯著不同。然而,它實際上與指向動態數組的指標相同。這意味著營運商
int[] a = new int[100]; //Java
相當於運算符
int* = new int[100]; //C++,
а не
int a[100]; //C++
在 Java 中,[]預設運算子檢查索引的範圍。此外,Java 沒有指標算術 — 您無法增加指標來存取陣列的下一個元素。 原始碼連結:Java 數組
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION