CodeGym /Java Blog /Toto sisi /Java 中的數組
John Squirrels
等級 41
San Francisco

Java 中的數組

在 Toto sisi 群組發布
想像一下儲藏室中的櫥櫃。它們每個都有自己的編號,並且每個都存儲一些 Baggage 對象。或酒單,其中每種酒都有編號,您可以通過提供飲料編號來訂購。或學生名單,其中“Adams”記錄在第一位,“Zimmer”記錄在最後。或者飛機上的乘客名單,每個人都被分配了一個編號的座位。在 Java 中,數組通常用於處理此類結構,即同類數據集。

CodeGym 課程中的數組

在 CodeGym 上,您將在 Java 語法任務的第 7 級開始使用數組。三個課程專門針對它們,以及不同級別的 8 個任務,以鞏固您使用數組的技能。但是在課程中你會多次遇到數組(特別是,Array 類將在Java Collections任務中學習,並作為你未來工作的一部分。

什麼是數組?

數組是一種存儲相同類型元素的數據結構。您可以將其視為一組編號的單元格。您可以在每個單元格中放置一些數據(每個單元格一個數據元素)。使用其編號訪問特定單元格。數組中元素的編號也稱為索引。在 Java 中,數組是同類的,即它的所有單元格都包含相同類型的元素。因此,整數數組僅包含整數 ( int ),字符串數組 — 僅包含字符串,而我們創建的Dog類的實例數組將僅包含Dog對象。換句話說,Java 不允許我們在數組的第一個單元格中放置一個整數,在第二個單元格中放置一個字符串,在第三個單元格中放置一個狗。Java 中的數組 - 2

聲明一個數組

你如何聲明一個數組?

與任何變量一樣,數組必須在 Java 中聲明。這可以通過兩種方式之一來完成。它們是等價的,但第一種方式更符合Java風格。第二個是 C 語言的遺留問題:許多 C 程序員轉而使用 Java,為了方便起見,保留了另一種方法。下表顯示了在 Java 中聲明數組的兩種方式:
不。 聲明一個數組,Java語法 例子 評論
1.
數據類型[] 數組名;

int[] myArray;

Object[] 
arrayOfObjects;  
建議以這種方式聲明一個數組。這是 Java 風格。
2.
數據類型 arrayName[];

int myArray[];

Object 
arrayOfObjects[];
繼承自C/C++的數組聲明方式,適用於Java
在這兩種情況下,dataType都是數組中變量的類型。在示例中,我們聲明了兩個數組。一個將存儲int,另一個將存儲Object對象。因此,數組聲明具有名稱和類型(數組元素的類型)。ArrayName是數組的名稱。

創建數組

你如何創建一個數組?

與任何其他對像一樣,您可以創建一個 Java 數組,即使用new運算符在內存中為它保留一個位置。這是如何完成的:

new typeOfArray[length]; 
其中typeOfArray是數組的類型,length是它的長度(即單元格數),以整數 ( int) 表示。但請注意,這裡我們只為數組分配了內存——我們沒有將聲明的數組與任何先前聲明的變量相關聯。通常先聲明一個數組,再實例化一個數組,例如:

int[] myArray; // Array declaration
myArray = new int[10]; // Create (allocate memory for) an array of 10 ints
在這裡,我們創建了一個名為myArray 的整數數組,通知編譯器它由 10 個單元格組成(每個單元格都包含一個整數)。但是,更常見的是使用以下縮寫語法在聲明數組時立即創建數組:

int[] myArray = new int [10]; // Declare the array and allocate memory "in one blow"
請注意:使用new運算符創建數組後,其單元格包含默認值。對於數字類型(如我們的示例),默認值為 0,對於布爾類型,默認值為false,對於引用類型,默認值為null。因此,執行此語句後

int[] myArray = new int[10];
我們得到一個包含十個整數的數組,並且在程序執行某些操作來更改值之前,每個單元格都包含 0。

您可以在“關於數組的一些事情”一文中找到有關數組的更多信息

Java 中的數組長度

正如我們上面所說,數組的長度是數組設計容納的元素數。數組的長度在創建後不能更改。 請注意在 Java 中,數組元素從零開始編號。因此,如果我們有一個包含 10 個元素的數組,那麼第一個元素的索引為 0,最後一個元素的索引為 9。 您可以使用lengthJava 中的數組 - 3變量獲取數組長度。例如:

int[] myArray = new int[10]; // Create an int array for 10 elements and name it myArray
System.out.println(myArray.length); // Display the array's length, i.e. the number of elements we can put into the array
輸出:

10

初始化數組並訪問其元素

現在我們知道如何在 Java 中創建數組。這個過程讓我們得到的不是一個空數組,而是一個填充了默認值的數組。例如,對於一個int數組,這是 0,如果我們有一個任何引用類型的數組,那麼每個單元格中的默認值都是null。我們通過其索引訪問數組元素(例如,設置其值、將其顯示在屏幕上或對其執行某些操作)。數組初始化是用特定值(默認值除外)填充數組的過程。 示例:讓我們為 4 個季節創建一個字符串數組,並用季節名稱填充它。

String[] seasons = new String[4]; /* Declare and create an array. Java allocates memory for an array of 4 strings, and each cell is set to null (since String is a reference type) */ 

seasons[0] = "Winter"; /* We set the first cell, i.e. the cell with index zero, to "Winter". Here we access the zeroth element of the array and write a specific value to it. */ 
seasons[1] = "Spring"; // We follow a similar procedure for the cell with index 1 (the second cell)
seasons[2] = "Summer"; // ... index 2
seasons[3] = "Autumn"; // and finally, index 3
現在季節的名稱被寫入數組的四個單元格。我們可以用不同的方式初始化數組,結合聲明和初始化:

String[] seasons = new String[] {"Winter", "Spring", "Summer", "Autumn"};
更重要的是,可以省略 new運算符:

String[] seasons = {"Winter", "Spring", "Summer", "Autumn"};

Java 如何在屏幕上顯示一個數組?

您可以使用for循環在屏幕上(即在控制台上)顯示數組元素。顯示數組的另一種更簡短的方法將在標題為“使用數組的有用方法”的段落中討論。同時,看一下這個使用循環顯示數組的示例:

String[] seasons = new String {"Winter", "Spring", "Summer", "Autumn"}; 
for (int i = 0; i < 4; i++) {
System.out.println(seasons[i]); 
}
該程序將顯示以下內容:

Winter 
Spring 
Summer 
Autumn

Java中的一維和多維數組

但是如果我們想要創建的不是數字、字符串或其他對象的數組,而是數組的數組怎麼辦?Java 讓您可以做到這一點。我們已經熟悉的那種數組 ( int[] myArray = new int[8] ) 被稱為一維數組。但是數組的數組稱為二維數組。它就像一個有行號和列號的表格。或者,如果您學習了線性代數的基礎知識,您可以將其視為矩陣。 Java 中的數組 - 4為什麼我們需要這樣的數組?好吧,對矩陣和表格以及具有類似結構的其他對象進行編程。例如,棋盤可以用 8x8 數組表示。多維數組的聲明和創建如下:

Int[][] myTwoDimentionalArray = new int[8][8];
這個數組恰好有 64 個元素:myTwoDimentalArray[0][0]myTwoDimentalArray[0][1]myTwoDimentalArray[1][0]myTwoDimentalArray[1][1]等等,直到myTwoDimentalArray[7][7] . 所以如果我們用它來表示一個棋盤,那麼 A1 對應於myTwoDimentalArray[0][0]並且 E2 對應於myTwoDimentalArray[4][1]。但是我們能把它推到什麼程度呢?在 Java 中,你可以指定一個數組的數組……一個數組的數組的數組,等等。當然,三維和更高維的數組用得很少。也就是說,例如,您可以使用三維數組對魔方進行編程。

使用數組的有用方法

Java 具有用於處理數組的java.util.Arrays類。通常,對數組執行的最常見操作是初始化(填充元素)、檢索元素(按索引)、排序和搜索。搜索和排序數組是另一天的主題。一方面,自己編寫多個搜索和排序算法是一種很好的做法。另一方面,所有最好的算法都已經實現並包含在標準 Java 庫中,您可以合法地使用它們。這是此類中的三個有用方法。

排序數組

void sort(int[] myArray, int fromIndex, int toIndex)方法按升序對整數數組或子數組進行排序。

在數組中搜索元素

int binarySearch(int[] myArray, int fromIndex, int toIndex, int key)此方法在已排序的myArray數組或子數組中查找關鍵元素,從fromIndextoIndex。如果找到該項目,則返回其索引。否則,它返回(-fromIndex)-1

將數組轉換為字符串

String toString(int[] myArray)方法將數組轉換為字符串。在 Java 中,數組不會覆蓋toString()。這意味著如果您嘗試一次顯示整個數組(System.out.println(myArray))而不是像標題為“在屏幕上顯示數組”的段落中那樣一次顯示一個元素,您將得到類的名稱和數組的十六進制哈希(由Object.toString()定義)。如果您是初學者,您可能不理解關於toString方法的解釋。最初,您不需要,但使用此方法可以更輕鬆地顯示數組。Java 讓您無需使用循環即可輕鬆顯示數組。下面的示例演示了這一點。

使用 sort、binarySearch 和 toString 的示例

讓我們創建一個整數數組,使用toString顯示它,使用sort方法對其進行排序,然後在其中找到一些數字。

class Main {
    public static void main(String[] args) {
        int[] array = {1, 5, 4, 3, 7}; // Declare and initialize the array
        System.out.println(array); // Try to display our array without using the toString method — the result is a hexadecimal number
        System.out.println(Arrays.toString(array)); // Display the array correctly 
        Arrays.sort(array, 0, 4); // Sort the entire array from the zeroth to the fourth element
        System.out.println(Arrays.toString(array)); // Display the sorted array
        int key = Arrays.binarySearch(array, 5); // Look for the number 5 in the sorted array. 
        // The binarySearch method will return the index of the array element we are searching for
        System.out.println(key); // Display the index of the number we searched for 
System.out.println(Arrays.binarySearch(array, 0)); // Now try to find a number that isn't in the array, 
        // and immediately display the result

    }
}
輸出:

[I@1540e19d 
[1, 5, 4, 3, 7] 
[1, 3, 4, 5, 7] 
3 
-1
第一個字符串是嘗試在不使用toString 的 情況下顯示數組。第二個是使用toString顯示的數組。第三個是排序數組。第四個是我們在排序數組中搜索 (5) 的數字的索引(記住我們是從零開始計數的,所以數組第四個元素的索引是 3)。在第五個字符串中,我們看到 -1。這是一個無效的數組索引。它表示我們搜索的數字(在本例中為 0)不在數組中。

有關 Array 類中的方法的更多信息

Arrays 類及其使用 — 本文介紹了 Array 類中的一些方法
Arrays 類有 18 個用於處理數組的重要方法

數組簡而言之

  • 數組的基本特徵:放置在其中的數據類型、名稱和長度。
    最後一個屬性是在創建數組時確定的(當為數組分配內存時)。前兩個屬性是在聲明數組時確定的。

  • 數組大小(單元格數)必須是int

  • 數組創建後無法更改其長度。

  • 可以通過其索引訪問數組元素。

  • 數組中的元素,就像 Java 中的其他所有元素一樣,從零開始編號。

  • 創建數組後,它會填充默認值。

  • Java 中的數組與 C++ 中的數組不同。它們幾乎就像指向動態數組的指針。

關於數組的有用資料

想了解更多關於數組的信息?查看以下文章。有很多關於這個主題的有趣和有用的材料。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION