我正在将 C# 代码重写为 Java。我遇到了一种 Java 不支持的数组。 int[,] 距离;
所以这是我的问题,这是什么? [,] 它与 [ ][ ] 是一回事吗?
我想如果我用 java int [ ] [ ] distance;
它会以相同的方式工作,但不确定。
最佳答案
[,]
Is it the same thing as[][]
?
没有。我将使用 int
作为元素类型以使事情变得更简单。 int[,]
是一个矩形数组。它是一个单一的对象,由两个维度索引。数组的每个元素请注意,您也可以有更多维度,例如int[,,] x = new int[10, 20, 30]
。
没有访问矩形数组的“一行”或“一列”的概念——所以
int[,] rectangular = new int[5, 3];
int[] row = rectangular[2]; // Invalid
将其与 int[][]
进行比较 - 这是一个数组的数组,也称为 锯齿状数组。数组的每个元素都是一个 int[]
... 要么是空引用,要么是对 int[]
对象的引用。每个元素都可以引用不同长度的数组,例如
int[][] jagged = new int[][]
{
new int[0],
new int[1],
new int[2]
};
这里,jagged[1][0]
是有效的,jagged[2][1]
和 jagged[2][2]
... 但是 jagged[0][0]
将无效,因为 jagged[0]
没有元素。当然,您可以访问锯齿状数组中的各个“行”:
int[] row = jagged[1];
请注意,多个元素也可以是同一个引用。例如:
int[][] jagged = new int[2][];
jagged[0] = new int[1];
jagged[1] = jagged[0];
jagged[0][0] = 10;
System.out.printn(jagged[1][0]); // Also 10! (References to the same array.)
然后当然可以混合搭配,例如int[][,]
其中顶级交错数组的每个元素都是一个矩形数组。我强烈建议不要这样做。
关于java - C#数组[,]转Java,具体数组的概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33668223/