首頁 > Java > java教程 > 主體

Java 陣列簡介

Susan Sarandon
發布: 2024-10-09 10:11:02
原創
767 人瀏覽過

Introduction to Arrays in Java

程式設計通常涉及管理和操作大量數據,對此高效且有效的數據結構至關重要。陣列是計算機科學中的基本資料結構,提供了一種儲存固定大小的相同類型元素序列的方法。在這篇部落格中,我們將深入了解 Java 中的陣列:了解它們是什麼、它們的語法、如何對它們進行操作以及它們的記憶體管理。

為什麼我們需要數組?

在 Java 中使用變數時,您可以單獨宣告並初始化每個變數,例如:

java
int a = 19;
String name = "John Doe";
登入後複製

但是,如果您需要處理相同類型的多個值,這種方法就會變得低效。例如,如果您要儲存多個卷號或名稱,則對每個值進行硬編碼是不切實際的。陣列可以讓您有效地儲存值的集合,從而派上用場。例如,如果您需要儲存五個卷號,則可以使用陣列。

什麼是數組?

數組本質上是相同類型的資料項的集合。數組可以儲存基本資料類型,如整數、浮點數和字符,以及物件。例如:

int[] rollNumbers = new int[5];
String[] names = {"Alice", "Bob", "Charlie"};
登入後複製

數組的語法

在 Java 中宣告陣列的語法很簡單:

dataType[] arrayName = new dataType[size];
登入後複製

例如,建立一個包含五個整數的陣列:

int[] rollNumbers = new int[5];
登入後複製

或者,您可以在一行中宣告和初始化陣列:

int[] rollNumbers = {23, 55, 9, 18, 45};
登入後複製

數組的特點

均質元素

在陣列中,所有元素必須屬於同一型別。您不能在單一數組中混合類型;例如:

int[] nums = {1, 2, "three"}; // Will cause a compile-time error
登入後複製

固定尺寸

陣列一旦創建,其大小就是固定的。您無法擴大或縮小其大小。這種約束通常會導致選擇其他資料結構,例如 ArrayList,以滿足更動態的資料需求。

記憶體管理

Java 中的陣列包括:

  • 堆疊記憶體:儲存數組的參考變數。
  • 堆疊記憶體: 儲存實際的陣列物件及其元素。

宣告數組時,會在堆疊記憶體中建立引用,並將數組物件儲存在堆疊記憶體中。

記憶體分配

陣列的記憶體分配有兩個關鍵階段:

  1. 宣告:建立了引用變量,但它沒有指向任何地方。
  2. 初始化:引用變數指向堆中實際的數組對象,其中包含元素。

例如:

int[] rollNumbers; // Declaration
rollNumbers = new int[5]; // Initialization
登入後複製

動態記憶體分配

Java 執行動態記憶體分配,這意味著在運行時,它會根據需要分配內存,從而使其內存管理變得高效。

數組中的輸入和輸出

接受輸入

要使用使用者輸入填充數組,您可以使用循環和掃描器來從控制台讀取輸入。

Scanner scanner = new Scanner(System.in);
int[] arr = new int[5];
for (int i = 0; i < arr.length; i++) {
    System.out.print("Enter element " + (i + 1) + ": ");
    arr[i] = scanner.nextInt();
}
登入後複製

列印陣列

您可以使用循環或 Arrays.toString() 實用方法列印數組,以獲得更易讀的輸出。

for (int i = 0; i < arr.length; i++) {
    System.out.print(arr[i] + " ");
}
登入後複製


System.out.println(Arrays.toString(arr));
登入後複製

多維數組

二維數組或矩陣是數組的數組。二維數組的語法如下圖所示:

int[][] matrix = new int[3][3];
登入後複製

例子

int[][] matrix = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};
登入後複製

為了將元素動態輸入到二維數組中,使用巢狀循環。

ArrayList:動態替代方案

Java 中的陣列大小固定,當編譯時元素數量未知時,會導致效率低下。這個限制可以透過使用 ArrayList 類別(Java Collections Framework 的一部分)來克服。

使用數組列表

ArrayList 類別提供動態調整大小。以下是建立 ArrayList 的語法:

ArrayList<Integer> numbers = new ArrayList<>();
登入後複製

您可以動態新增和操作元素:

numbers.add(1);
numbers.add(2);
numbers.add(3);
System.out.println(numbers); // Output: [1, 2, 3]

numbers.set(1, 10); // Change element at index 1
System.out.println(numbers); // Output: [1, 10, 3]

numbers.remove(0); // Remove element at index 0
System.out.println(numbers); // Output: [10, 3]

boolean contains = numbers.contains(10); // Check if the list contains 10
System.out.println(contains); // Output: true
登入後複製

ArrayList 的內部運作原理

在內部,ArrayList 使用具有初始固定容量的動態陣列。當此容量耗盡時,將建立一個容量更大的新數組,並複製現有元素。此過程可確保 ArrayList 可以隨著元素的添加而動態成長。

常見數組操作

尋找最大元素

要找出數組中的最大元素,請迭代數組並追蹤最高值:

int max = arr[0];
for (int i = 1; i < arr.length; i++) {
    if (arr[i] > max) {
        max = arr[i];
    }
}
System.out.println("Maximum value: " + max);
登入後複製

反轉數組

要反轉數組,請使用兩指針技術:

public static void reverse(int[] arr) {
    int start = 0;
    int end = arr.length - 1;
    while (start < end) {
        int temp = arr[start];
        arr[start] = arr[end];
        arr[end] = temp;
        start++;
        end--;
    }
}
登入後複製

Calling the reverse function:

int[] arr = {1, 2, 3, 4, 5};
reverse(arr);
System.out.println(Arrays.toString(arr)); // Output: [5, 4, 3, 2, 1]
登入後複製

Conclusion

Arrays are a critical data structure in Java, enabling the storage and manipulation of data sets efficiently. While fixed in size, arrays are powerful and versatile when dealing with homogeneous data types. For dynamic data needs, ArrayList provides additional flexibility, allowing arbitrary growth in size. Understanding these structures and their operations lays the groundwork for more advanced programming and data management. Moreover, practicing array operations and understanding their underlying memory management helps in writing more efficient and optimized code.

以上是Java 陣列簡介的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板