如何理解Java中的三维数组

时间:2015-08-08 15:42:58

标签: java arrays

我试图理解三维数组如何在Java中工作。 我知道二维规则,但我不知道如何在实践中使用三维。

int[] num1to3 = {1, 2, 3};
int[] num4to6 = {4, 5, 6};
int[] num7to9 = {7, 8, 9};

int[][] num1to6 = {num1to3, num4to6};

int[][][] allNum = {num1to3, num4to6, num7to9}; // it doesn't work
int[][][] allNum = {num1to6[0], num1to6[1], num7to9}; // it doesn't work too

3 个答案:

答案 0 :(得分:1)

java中没有多维数组 - 只是一个看起来和功能相似的语法;实际上它们是数组的数组,类似于结构而不是多维数组。

当您声明三维数组时,例如int[][][] myArray,你实际上只是一个引用变量myArray,其类型是int [] [] [](这就是一个类型,就像String或Object)。唯一与第一个维度兼容的类型赋值是int [] [],唯一与第二个维度兼容的类型赋值是int [],最后一个维度是int(你看到只有一个[]集删除的模式从左到右)。

在实践中:

int[] array1d = { 1, 2, 3 };
int[][] array2d = { array1d, { 4, 5, 6} };
int[][][] array3d = { array2d, { { 7, 8 }, { 9, 10, 11, 12 } } };

这两个引用以及兼容的声明都很适合他们适当的插槽。第三行还表明尺寸不需要具有相同的尺寸(与传统的多维数组相反)。他们甚至不需要存在:

int[][] array2d_part = { { 1, 2, 3}, null };

这是一个包含索引0处的数组{1,2,3}且索引1处的null的数组。由于除最右边的维之外的所有数据都是引用类型,因此null适合(null与 any 参考类型)。

答案 1 :(得分:0)

如果你想象二维数组作为矩阵,那么三维就是一个立方体,用数字填充。

答案 2 :(得分:0)

每当您声明它时初始化2D或3D数组时,您需要设置两个括号。例如

int[][] doubleDoug= { {1,2,3}, {4,5,6} };
int[][][] tripleDoug= { {1,2,3,}, {4,5,6}, {7,8,9} };