gpt4 book ai didi

java - 在java中创建数组时可以省略rowsize吗?

转载 作者:行者123 更新时间:2023-12-01 13:19:30 26 4
gpt4 key购买 nike

在我关于二维数组的注释中,它说您可以在没有行大小的情况下定义它,但需要列大小。这是我们教授的错误吗?因为我们稍后在同一个注释中说你可以像这样定义一个数组:

int [][] derparray = new int [4][];

看起来好像正好相反,不是吗?

最佳答案

如果查看二维矩阵,“行大小”等于“列数”,“列大小”就是“行数”。

做这样的事情:

int [][] derparray = new int [4][5];

分配一个包含 4 个元素的数组,其中每个元素都是包含 5 个元素的数组。这实际上为您提供了一个 4 行 5 列的二维数组。这里的“列大小”是行数,为4; “行大小”是列数,为 5。

如果你这样做:

int [][] derparray = new int [4][];

4 是行数。但是,没有为每个元素分配任何内容。每个元素都设置为 null,但每个元素稍后都可以设置为一维 int[] 数组。一维数组的所有行的大小不必相同。因此,在这个例子中,我们可以说,由于列大小是行数,因此列大小为 4。但是,由于这实际上并没有分配任何“列”,所以看起来更像是谈论列的大小很奇怪。所以我想说不,你的教授没有搞反,但他所说的是以一种相当困惑的方式表达的。

基本上,我想说,除非您像第一个示例一样实际分配矩阵,否则谈论“行大小”或“列大小”并不是一个好主意。这些术语并没有真正的意义。

更多:以下内容在 Java 中是非法的,因为它没有任何意义:

int [][] derparray = new int [][4];

因为二维数组实际上是数组的数组。在 new int [4][] 示例中,这将创建一个 4 行数组,但数组元素(行)尚不包含任何内容。这很好,因为您可以稍后设置数组元素。但是 new int [][4] 会做什么呢?看起来它会创建一个数组,其中每个元素都是 4 个整数(列)的数组,但是它将把每个元素放在哪里呢?它无法创建包含所有这些元素的数组,因为您没有告诉它要创建多少个元素。因此,可以省略“列数”,但不能省略“行数”。我认为这就是你的教授所说的你可以省略行大小但不能省略列大小的意思,但正如我上面所解释的,这些术语并没有真正的意义。

关于java - 在java中创建数组时可以省略rowsize吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22159822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com