Java将二维数组指定给三维数组

Java将二维数组指定给三维数组,java,arrays,Java,Arrays,我有以下代码,似乎可以编译: int[] arr = {1, 2}; int[][] arr2 = {arr, {1, 2}, arr}; int[][][] arr3 = {arr2}; 你能解释一下为什么最后一句话有效吗?我们不是把二维数组分配给三维数组吗 谢谢 我们不是把二维数组分配给三维数组吗 如果你这样做,你是对的 int[][][] arr3 = arr2; 但是你在这里做的是int[][]arr3={arr2}未分配。您正在创建包含元素的数组 添加元素和分配引用是两件不同

我有以下代码,似乎可以编译:

int[] arr = {1, 2};
int[][] arr2 = {arr, {1, 2}, arr};
int[][][] arr3 = {arr2};
你能解释一下为什么最后一句话有效吗?我们不是把二维数组分配给三维数组吗

谢谢

我们不是把二维数组分配给三维数组吗

如果你这样做,你是对的

   int[][][] arr3 = arr2;
但是你在这里做的是
int[][]arr3={arr2}未分配。您正在创建包含元素的数组

添加元素和分配引用是两件不同的事情

这是因为在名为
arr3
的数组中,第0行和第0列有一个2D数组,这很好

int[][][] arr3 = {arr2};
等于

int[][][] arr3 = new int[10][10][10];
arr3[0] = arr2;