在黑莓文档中,他们说数组需要一个对象句柄:
int[] array; // 1 object handle
数组数组需要多少个句柄?
int[][] array = new int[4][2]; // how many handles?
我无法弄清楚它是否会是单一的,因为毕竟数组可以被解释为单个存储器,或者它是倍数(在这种情况下为5)因为每个元素中有一个第一级数组?
答案 0 :(得分:3)
Java没有多维数组,正如您所知道的那样。它有数组数组。
鉴于此声明:
int[][] array = new int[4][2];
有4个int[]
数组,每个数组都有2 int
个元素。
Object o1 = array[0];
Object o2 = array[1];
Object o3 = array[2];
Object o4 = array[3];
因此,这意味着array
也是Object[]
。
Object[] oX = array;
仅仅因为你有一个int[][]
,并不意味着每个int[]
都是不同的。
int[][] weird = new int[4][];
weird[0] = weird[1] = weird[2] = weird[3] = new int[5];
现在只有一个int[]
,每个weird[i]
都会分享此引用。
weird[0][2] = 5;
System.out.println(weird[3][2]); // prints "5"