Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤和異常

Java 多執行緒

Java 同步

Java 網路程式設計

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 雜項

Java API 和框架

Java 類參考

Java 有用資源

Java - 陣列



Java 中的陣列是什麼?

Java 提供了一種稱為陣列的資料結構,它儲存固定大小的相同資料型別的元素的順序集合。陣列用於儲存資料集合,但通常更方便地將陣列視為相同型別變數的集合。

無需宣告單個變數,例如 number0、number1、... 和 number99,您可以宣告一個數組變數,例如 numbers,並使用 numbers[0]、numbers[1] 和 ...、numbers[99] 來表示單個變數。

本教程介紹如何宣告陣列變數、建立陣列以及使用索引變數處理陣列。

宣告陣列變數

要在程式中使用陣列,必須宣告一個變數來引用陣列,並且必須指定變數可以引用的陣列型別。以下是宣告陣列變數的語法:

語法

dataType[] arrayRefVar;   // preferred way.
or
dataType arrayRefVar[];  // works but not preferred way.

注意 - 首選樣式為dataType[] arrayRefVar。樣式dataType arrayRefVar[]來自 C/C++ 語言,並在 Java 中被採用以適應 C/C++ 程式設計師。

示例

以下程式碼片段是此語法的示例:

double[] myList;   // preferred way.
or
double myList[];   // works but not preferred way.

建立陣列

您可以使用 new 運算子建立陣列,語法如下:

語法

arrayRefVar = new dataType[arraySize];

上述語句執行兩件事:

  • 它使用 new dataType[arraySize] 建立一個數組。

  • 它將新建立陣列的引用賦給變數 arrayRefVar。

宣告陣列變數、建立陣列並將陣列的引用賦給變數可以組合在一個語句中,如下所示:

dataType[] arrayRefVar = new dataType[arraySize];

或者,您可以按如下方式建立陣列:

dataType[] arrayRefVar = {value0, value1, ..., valuek};

陣列元素透過索引訪問。陣列索引從 0 開始;也就是說,它們從 0 開始到arrayRefVar.length-1

示例

以下語句宣告一個數組變數 myList,建立一個包含 10 個雙精度型別元素的陣列,並將它的引用賦給 myList:

double[] myList = new double[10];

下圖表示陣列 myList。這裡,myList 包含十個雙精度值,索引從 0 到 9。

Java Array

處理陣列

處理陣列元素時,我們經常使用for迴圈或foreach迴圈,因為陣列中的所有元素都是相同型別,並且陣列的大小是已知的。

示例:建立、迭代和對陣列執行其他操作

public class TestArray {

   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};

      // Print all the array elements
      for (int i = 0; i < myList.length; i++) {
         System.out.println(myList[i] + " ");
      }
     
      // Summing all elements
      double total = 0;
      for (int i = 0; i < myList.length; i++) {
         total += myList[i];
      }
      System.out.println("Total is " + total);
      
      // Finding the largest element
      double max = myList[0];
      for (int i = 1; i < myList.length; i++) {
         if (myList[i] > max) max = myList[i];
      }
      System.out.println("Max is " + max);  
   }
}

這將產生以下結果:

輸出

1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5

使用陣列的 foreach 迴圈

JDK 1.5 引入了一種新的 for 迴圈,稱為 foreach 迴圈或增強型 for 迴圈,它使您可以順序遍歷整個陣列,而無需使用索引變數。

以下程式碼顯示陣列 myList 中的所有元素:

示例:顯示陣列的所有元素

public class TestArray {

   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};

      // Print all the array elements
      for (double element: myList) {
         System.out.println(element);
      }
   }
}

這將產生以下結果:

輸出

1.9
2.9
3.4
3.5

將陣列傳遞給方法

就像您可以將基本型別的值傳遞給方法一樣,您也可以將陣列傳遞給方法。例如,以下方法顯示int陣列中的元素:

示例

public static void printArray(int[] array) {
   for (int i = 0; i < array.length; i++) {
      System.out.print(array[i] + " ");
   }
}

您可以透過傳遞陣列來呼叫它。例如,以下語句呼叫 printArray 方法來顯示 3、1、2、6、4 和 2:

示例

printArray(new int[]{3, 1, 2, 6, 4, 2});

從方法返回陣列

方法也可以返回陣列。例如,以下方法返回另一個數組的反轉陣列:

示例

public static int[] reverse(int[] list) {
   int[] result = new int[list.length];

   for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
      result[j] = list[i];
   }
   return result;
}

Arrays 類

java.util.Arrays 類包含各種靜態方法,用於對陣列進行排序和搜尋、比較陣列以及填充陣列元素。這些方法針對所有基本型別進行了過載。

序號 方法及描述
1

public static int binarySearch(Object[] a, Object key)

使用二分查詢演算法在指定的 Object 陣列(Byte、Int、double 等)中搜索指定的值。在呼叫此方法之前,必須先對陣列進行排序。如果搜尋鍵包含在列表中,則返回搜尋鍵的索引;否則,返回(-(插入點 + 1))。

2

public static boolean equals(long[] a, long[] a2)

如果兩個指定的 long 型陣列彼此相等,則返回 true。如果兩個陣列包含相同數量的元素,並且兩個陣列中所有對應的元素對都相等,則認為這兩個陣列相等。如果兩個陣列相等,則返回 true。所有其他基本資料型別(Byte、short、Int 等)都可以使用相同的方法。

3

public static void fill(int[] a, int val)

將指定的 int 值賦給指定 int 陣列的每個元素。所有其他基本資料型別(Byte、short、Int 等)都可以使用相同的方法。

4

public static void sort(Object[] a)

根據其元素的自然順序,將指定的 Object 陣列排序為升序。所有其他基本資料型別(Byte、short、Int 等)都可以使用相同的方法。

廣告