1.锯齿状阵列
作为 Java 程序员,您不仅可以交换二维数组的行,还可以根据需要构造数组。
假设您希望二维数组的第一行的长度为10
,并且您希望第二行的长度为50
。我们能做到吗?我们可以。
首先,我们需要创建一个“容器的容器”——这是第一个数组,它将存储对行数组的引用。这是如何完成的:
int[][] name = new int[height][];
您只需省略第二个维度,Java 机器就会创建一个容器的容器。这是执行此代码后内存中的内容:
而且,好吧,您已经知道如何创建一维数组🙂
这就是生成的代码的样子:
|
二维数组 第零行是一个 10 元素数组第一行是一个 50 元素 数组 |
我们刚刚创建了一个所谓的“交错数组”。
而如果我们现在想在屏幕上显示这个数组的所有元素,那么数组的length
属性就会派上用场:毕竟数组的行的长度是不同的。
顺便问一下,在我们的示例中,您如何找到“容器的容器”的长度?它也是一个数组对象,这意味着它有一个长度。正确答案是matrix.length
。
组成我们行的数组怎么样?matrix[0].length
2. 使用二维数组
假设你想显示一个二维数组。你是怎样做的?
我们的代码看起来像这样:
|
创建一个数组 用值填充数组 在数组的行上迭代的外循环。 迭代单行单元格的内部循环。 |
您需要两个嵌套循环。第一个我们称为outer,第二个称为inner。
在外部循环(i
变量)中,我们依次遍历构成二维数组的所有行(数组)。每个值i
对应于具有该索引的一行。
在内部循环(j
变量)中,我们遍历行中的所有单元格。多亏了内部循环,由一个一维数组的值组成的一行将显示在屏幕上。
这是将显示的内容:
处理数组的一行 |
|
处理数组的两行 |
|
处理数组的三行 |
|
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
}
}
这只是创建数组!然后你还需要以某种方式使用它。
奖励任务:编写显示三维数组中所有值的代码。
GO TO FULL VERSION