了解Java中的多维数组

3

我正在尝试理解Java中的多维数组概念。下面是发布的代码。

    int [] [] [] x = new int [3] [] [];
    int i, j;
    x[0] = new int[4][];
    x[1] = new int[2][];
    x[2] = new int[5][]; 
    for (i = 0; i < x.length; i++)
     {
        for (j = 0; j < x[i].length; j++) 
         {
            x[i][j] = new int [i + j + 1];
            System.out.println("size = " + x[i][j].length);
         }
     }
     }

我不理解 "x[0] = new int[4][];" 中存储了什么,以及这样写的背后意图是什么?有任何建议将非常有帮助。

2个回答

2

Java有一个数组。在java中,如果你想要一个多维数组,你只需要创建一个数组中的数组。 使用x[0] = new int[4][];,你告诉它这个多维数组有4行,但是你并没有填充它们。 如果你说new int[4][2],每一行会有两个默认值为int的项。 如果你像c#那样有一种语言,你会说int[,],但是在java中不可能。

因此,也可以在第一行放2个项目,下一行放3个项目。 所以,长度不均匀也是可能的。


2

多维数组基本上是一个数组的数组 :) 就像这样:

int[][] X = new int[4][3];

意思是:

      X[0]   X[1]   X[2]   X[3]
X -> [    ] [    ] [    ] [    ]
     [    ] [    ] [    ] [    ]
     [    ] [    ] [    ] [    ]

并且
int[][] X = new int[4][];
X[0] = new int[2]; 
X[1] = new int[1]; 
X[2] = new int[3]; 
X[3] = new int[2]; 

会生成像这样的不规则数组:
      X[0]   X[1]   X[2]   X[3]
X -> [    ] [    ] [    ] [    ]
     [    ]        [    ] [    ]
                   [    ]       

因此,每个X的“子项”都是另一个数组。就是这么简单,不要过度思考这个概念,它并不像看起来那么复杂 :)


"int [] [] [] x = new int [3] [] []" 这是数组初始化对吧?x[0] = new int[4][3]; 是什么意思? - mohan babu
哦,你说得对,我漏了一个括号对,我的错,已经改正 :-) - Kelevandos
1
在我的例子中,子数组的大小是预定义的(每个数组包含3个元素)。如果你使用一个空括号(new int[4][]),你可以为每个子数组定义不同的大小。 - Kelevandos
请你能否提供一个简单的图表来总结你的解释。 - mohan babu
现在你明白了吗? :) - Kelevandos
让我们在聊天中继续这个讨论 - mohan babu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接