1.鋸齒狀陣列

作為 Java 程序員,您不僅可以交換二維數組的行,還可以根據需要構造數組。

假設您希望二維數組的第一行的長度為10,並且您希望第二行的長度為50。我們能做到嗎?我們可以。

首先,我們需要創建一個“容器的容器”——這是第一個數組,它將存儲對行數組的引用。這是如何完成的:

int[][] name = new int[height][];

您只需省略第二個維度,Java 機器就會創建一個容器的容器。這是執行此代碼後內存中的內容:

Java 中的鋸齒狀數組

而且,好吧,您已經知道如何創建一維數組🙂

這就是生成的代碼的樣子:

// Matrix of important data
int[][] matrix = new int[2][];
matrix[0] = new int[10];
matrix[1] = new int[50]
二維數組

第零行是一個10元素數組
第一行是一個50元素 數組

我們剛剛創建了一個所謂的“交錯數組”。

而如果我們現在想在屏幕上顯示這個數組的所有元素,那麼數組的length屬性就會派上用場:畢竟數組的行的長度是不同的。

順便問一下,在我們的示例中,您如何找到“容器的容器”的長度?它也是一個數組對象,這意味著它有一個長度。正確答案是matrix.length

組成我們行的數組怎麼樣?matrix[0].length



2. 使用二維數組

假設你想顯示一個二維數組。你是怎樣做的?

我們的代碼看起來像這樣:

int[][] matrix = new int[3][];
matrix[0] = new int[]{1, 2, 3, 4, 5, 6};
matrix[1] = new int[]{1, 2, 3};
matrix[2] = new int[]{1};
for (int i = 0; i < matrix.length; i++) {
   for (int j = 0; j < matrix[i].length; j++)
      System.out.print( matrix[i][j] + " " );
   System.out.println();
}
創建一個數組
用值填充數組


在數組的行上迭代的外循環。
迭代單行單元格的內部循環。

您需要兩個嵌套循環。第一個我們稱為outer,第二個稱為inner

在外部循環(i變量)中,我們依次遍歷構成二維數組的所有行(數組)。每個值i對應於具有該索引的一行。

在內部循環(j變量)中,我們遍歷行中的所有單元格。多虧了內部循環,由一個一維數組的值組成的一行將顯示在屏幕上。

這是將顯示的內容:

處理數組的一行
1 2 3 4 5 6
處理數組的兩行
1 2 3 4 5 6
1 2 3
處理數組的三行
1 2 3 4 5 6
1 2 3
1


3. 多維數組

還有一個關於數組的有趣事實,您可能已經猜到了。如果你能做一個二維數組,那麼你能做一個三維數組嗎?

是的,您可以創建任意維度的數組。這樣的數組稱為“多維”。

只是為了好玩,讓我們創建一個具有 4 個維度的多維數組。

 int[][][][] matrix = new int[2][3][4][5];

這段代碼太簡單了吧?

如果手動創建呢?

int[][][][] matrix;
matrix = new int[2][][][];                // Create a 2-element array of references to references to references
for (int i = 0; i < matrix.length; i++)
{
  matrix[i] = new int[3][][];                // Create a 3-element array of references to references
  for (j = 0; j < matrix[i].length; j++)
  {
    matrix[i][j] = new int[4][];             // Create a 4-element array of references
    for (k = 0; k < matrix[i][j].length; k++)
      matrix[i][j][k] = new int[5];          // Create 5-element arrays of integers
  }
}

這只是創建數組!然後你還需要以某種方式使用它。

獎勵任務:編寫顯示三維數組中所有值的代碼。