“你好,我最聪明的学生!”
“你好,瑞希!”
“你是否渴望关于数组的新讨论?好吧,今天我们为你准备了一个!今天我要告诉你关于锯齿状数组和多维数组。”
“听起来嗜血又可怕。”
“别担心,一个真正的程序员总是可以处理数组,即使它露出牙齿。开个玩笑,数组的锯齿反映了不仅可以交换二维数组的行,还可以构造数组的能力然而它必须如此。
“假设您希望二维数组的第一行长度为 10,第二行长度为 50。”
“你真的可以吗?”
“当然!首先,我们创建一个‘容器的容器’——这是第一个数组,它将存储对行数组的引用。这是如何完成的:
int[][] name = new int[height][];
“您只需省略第二个维度,Java 机器就会创建一个容器容器。这就是执行此代码后内存中的内容:

“而且,你已经知道如何创建一维数组 🙂
这就是生成的代码的样子:
|
二维数组 第零行是一个 10 元素数组第一行是一个 50 元素数组 |
“我们刚刚创建了一个所谓的“锯齿状”阵列。它的边缘粗糙且不规则。
“而如果我们现在想在屏幕上显示这个数组的所有元素,那么数组的length
数组就派上用场了:毕竟数组的行的长度是不同的。
“对了,你能告诉我如何在我们的示例中找到'container of containers'的长度吗?它也是一个数组对象,这意味着它有一个长度。”
“大概吧matrix.length
?”
“完全正确!对于形成行的数组,我们将用于matrix[0].length
第零行。”
“首先,这意味着我们会使用matrix[1].length
?”
“非常正确,在第一种情况下,执行命令会产生10,而在第二种情况下,结果将是50。
使用二维数组
“现在让我们尝试显示一个二维数组:
|
创建数组 用值填充数组 迭代数组行的外循环。 迭代单行单元格的内部循环。 |
“如您所见,我们需要两个嵌套循环。第一个我们称为 outer,第二个称为inner。
“在外部循环(i
变量)中,我们依次遍历构成二维数组的所有行(数组)。每个值对应于i
具有该索引的行。
“在内部循环(j
变量)中,我们遍历行中的所有单元格。由于内部循环,由一个一维数组的值组成的一行将显示在屏幕上。
“这是将要显示的内容:
数组的一行被处理 | 1 2 3 4 5 6 |
处理数组的两行 | 1 2 3 4 5 6 |
处理数组的三行 | 1 2 3 4 5 6 |
多维数组
“朋友!你有没有猜到,如果有二维的阵法,那么也可以有三维的?
“我只是在想这个,但不好意思问。
“是的,你可以创建一个三维数组,一般来说,任何维度的数组。这样的数组被称为‘多维’。为了好玩,让我们创建一个有 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
}
}
“这只是创建一个数组!然后你还需要以某种方式使用它。”
“我收回我说过的话。与他们合作并不容易。但这是可能的。”
“既然有可能,这里有一个额外的任务。编写代码来显示三维数组中的所有值。你知道的足够多了。最主要的是要有耐心和细心。或者可能是足智多谋(有一个秘密位将帮助您在一行中解决此任务的知识)。但无论您如何解决它,请解决它。”
“谢谢你,Rishi。我会试试的。”
GO TO FULL VERSION