谁能告诉我这种创建数组的方法有什么问题,看来仍然可行:
Object [] a = new Object[5];
Object [] b = new Object[5];
Object [] c = new Object[5];
Object [] d = new Object[6];
Object [] e = new Object[5];
a[1] = b;
a[2] = c;
b[1] = d;
d[1] = e;
a[1][2] = c; // error, how do I make this work if I insist of building my array like this?
我到底做了什么?从技术上讲,这是多维数组吗?为什么我不能使用例如a [1] [2] [2]来访问元素,如何以类似的方式访问数据?
答案 0 :(得分:0)
在下面的代码中,您创建了5个类型为Object的数组。
Object [] a= new Object[5];
Object [] b= new Object[5];
Object [] c= new Object[5];
Object [] d= new Object[6];
Object [] e= new Object[5];
现在,当您这样做时:
a[1]=b;
a[2]=c;
b[1]=d;
d[1]=e;
您只是将数组的各个索引分配给另一个引用。 (在您的情况下碰巧是对数组的引用)
发生编译错误的行是因为a[]
不是2D数组。
a[1][2]=c;
创建锯齿阵列
使用以下任何一种语法:
int[][] jaggedArr = {{1, 2}, {3, 4, 5}, {6, 7, 8, 9}};
OR
int[][] jaggedArr = new int[3][];
jaggedArr[0] = new int[] {1, 2};
jaggedArr[1] = new int[] {3, 4, 5};
jaggedArr[2] = new int[] {6, 7, 8, 9};
this链接中的更多内容。
答案 1 :(得分:0)
我假设您知道obj []实际上是一个参考值,因此,我正在寻找“将对象带出该参考值”的方法,因此可以使用数组operator []来访问该值。例如,我声明一个一维数组,就像我在原始问题中一样,因此可以使用a [1]。[2]访问存储在a [1]
中的数组中的值Object [] a= new Object[5];
Object [] b= new Object[5];
a[1] = b;
因此,也许a [1]会导致将对象带出a [1]中的参考值b [],然后使用[2]来得出b [2]处的值存储。