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
  }
}

这只是创建数组!然后你还需要以某种方式使用它。

奖励任务:编写显示三维数组中所有值的代码。