[toc] https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html # Array ### 宣告陣列變數 ```java int[] arr; int arr2[]; // 不建議 ``` --- ### 建立陣列 建立一個有10個int的陣列, 並assign到arr變數 ```java arr = new int[10]; ``` 其他建立範例 ```java int[] arr = new int[3]; // 此時arr = {0, 0, 0} String[] arr2 = new String[3]; // 此時arr2 = {null, null, null} ``` --- ### 以初始值建立陣列 請養成在`,`後空一格的好習慣。 ```java int[] arr = {1, 2, 3, 4, 5}; String names = {"Olympic", "Titanic", "Britannic"}; ``` ```{}```方法(初始值) **只有在宣告時能使用** 不能再```arr = {6, 7, 8, 9, 10};``` 來進行更改內容 --- ### 陣列取值, 設值 在學取值前,我們要先懂 index(索引) 的概念 首先,我們要取值的方式就是 ==arr[(index)]== (arr 是 array 的縮寫) <!-- 假設今天我想取 arr[3] 電腦會先找到 arr 這個陣列的記憶體位置 在往後數3個 (因為陣列的記憶體是連續排列的) 以此找到 arr[3] --> 有個神奇的特性,他的 index(索引) 是從0開始算的 意思就是如果==陣列長度為4,那他的 index 會是 0~3== 因此,剛剛我們取的 ==arr[3] 其實是陣列的第四項== 所以在取值 & 設值的時候我們通常這樣設 ```java int[] arr = new int[4]; //設值 // 把arr的第一項設置為122 // {122, 0, 0, 0} arr[0] = 122; // 把arr的第一項設置為97 // {122, 97, 0, 0} arr[1] = 97; // 取值 int k = arr[0]; System.out.println(k); // 122 ``` --- 陣列長度(int): ```arr.length``` (陣列長度無法更改) <!-- (補充) index從0開始算的原因: 從剛剛的介紹中,我們已經了解了取值的過程 而其中 index 起始值為 0 原因是因為電腦 arr 的記憶體位址存的是第一個數值,而程式語言開發時為了防止不必要的減法運算所以從0開始 不必要的減法運算: 假設你要取 arr[n],電腦會在得到記憶體位子後,往後數 n 個位置,那如果今天 index 由 1 開始,便要往後數 n-1 ,開發員不希望不必要的 n-1 --> --- ### 複製陣列 在`System` class 有 ```java public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) ``` 能使用。 --- ### 多維陣列 ```java= int[][] arr; int[][] arr = new int[3][3]; int[][] arr = {{1, 2, 3}, {4, 5, 6}}; ```