java 2d数组声明

9njqaruj  于 2021-07-06  发布在  Java
关注(0)|答案(3)|浏览(535)

当我被教导二维数组时,我被教导这是一个数组数组,类似于数组列表的数组。但我在想,这真的很让人困惑:

ArrayList[] arrOfList = new ArrayList[5];
arrOfList[0] = new ArrayList<Integer>();
arrOfList[0].add(1);
arrOfList[0].add(2);
arrOfList[0].add(3);
//arrOfList[0] is the first list, with 3 elements
//arrOfList is an array of 5 lists; arrOfList.length = 5

int[][] arrOfArr = new int[3][5];
//arrOfArr[0] is NOT an array with 3 elements
//arrOfArr is NOT an array of 5 arrays; arrOfArr.length = 3

如果我把我认为相关的部分加上粗体(但不要加粗体),我想我的意思会更清楚:
arraylist[]arroflist=新的arraylist[5];
int[][]arrofarr=新int[3][5];
我想我的问题是:既然将2d数组与任意类型相关联是不对的,那么什么是更直观的方法来考虑声明2d数组呢(如上所示)

ttcibm8c

ttcibm8c1#

int[][]arrofarr=新int[3][5];
//arrofarr[3]是行数
//arrofarr[5]是列数

v09wglhw

v09wglhw2#

int[][] arrOfArr = new int[3][5] 这将创建一个由3行5列的数组单元格组成的空网格。即

[][][][][]
[][][][][]
[][][][][]

然后填充这些列 arrOfArr[0][2] = 4 这可以归结为 row 0 和对面的 column 2 . 即

[][][4][][]
[][][][][]
[][][][][]

或者,将其视为一组3批5个单元阵列

[][][4][][], [][][][][], [][][][][]
4dc9hkyq

4dc9hkyq3#


这可能会帮助你更形象化。
使用方括号时 [] ,第一对总是行,第二对是列。在这两种情况下,第一个维度(行)保存相应数组/数组列表的内存地址。
第二个维度(列)保存存储在array/arraylist的特定行中的相应值。
你所学到的是正确的。数组的数组类似于数组列表的数组,只是数组列表的长度是可变的。这意味着,对于ArrayList数组,宽度(列数)不是静态的。

ArrayList[] arrOfList = new ArrayList[5]

这就是说,创建一个长度为5(5行)的数组,数据类型为arraylist(长度可变,因此可以是任意数量的列)。

int[][] arrOfArr = new int[3][5]

也就是说,创建一个长度为3(3行)的数组,数据类型为长度为5(5列)的数组。
arraylist具有可变长度这一事实可能会引起混淆,但我仍然坚持相同的答案:第一对[]=行;第二对[]=列。

相关问题