我无法理解以下多维代码。有人可以澄清一下吗?
int[][] myJaggedArr = new int [][]
{
new int[] {1,3,5,7,9},
new int[] {0,2,4,6},
new int[] {11,22}
};
我可以知道它与以下代码的区别吗?
int[][] myArr = new int [][] {
{1,3,5,7,9},
{0,2,4,6},
{11,22} };
答案 0 :(得分:7)
根本没有什么不同。前者只是让你更明确地创建一个数组数组。
答案 1 :(得分:3)
没有真正的区别。第一个是声明子数组,而第二个只是将数组的值放入数组
答案 2 :(得分:2)
这两段代码产生相同的结果。
多维数组是数组的数组。
myArr[0][1]
将返回3 myArr[1][1]
将返回2 myArr[2][0]
将返回11 答案 3 :(得分:0)
完全相同 - 如果你用另一个替换并编译,你将获得逐字节相同的class
文件。亲自试试吧!
答案 4 :(得分:0)
这两个代码片段都会产生具有等效值的多维数组。
第二个片段显示在使用内部数组的数组文字快捷方式时,不需要显式使用new
。对于外部阵列也是如此。此代码可以进一步简化为:
int[][] myArr = { {1,3,5,7,9}, {0,2,4,6}, {11,22} };
Oracle Java Tutorial没有显示混合使用new
来声明数组与文字数组声明的任何示例。
答案 5 :(得分:0)
从以上述方式开始声明数组开始。
您可以通过声明:
来创建数组 int [] arr = new int[3]; //(eq 1)
您可以通过声明数组中的值来更进一步:
int [] arr = {0,1,2}; //(eq 2)
如果您提前知道自己的值,则不必创建int []的实例。
现在回答你的问题。正如其他人所说,这两者之间没有区别,只是更清楚地了解你在做什么。相当于eq。二维数组中的2是:
int [][] arr = {{0,1,2},{3,4,5},{6,7,8}}; //(eq 3)
注意在开始输入值之前,如何不需要声明“new int [] []”。 “{0,1,2}”是一个数组本身,所以在eq 3中第一个“{”和last}中的所有其他内容。事实上,在声明arr之后,你可以调用数组“{0,1 ,2}“来自以下陈述的方程3:
arr[0]; //(eq 4)
eq 4相当于eq 2.你可以用“new int [] {”或“new int [] [] {”切换出简单的“{”。如果你想换一个用于另一个,那很好,唯一真正的区别是天气与否,它符合你的编码风格。
为了好玩,这里是一个简短语法的三维数组的例子:
//这是一个非常长的陈述,我不建议以这种方式使用它
int [][][] arr = {{{0,1,2},{3,4,5},{6,7,8}},
{{9,10,11},{12,13,14},{15,16,17}},
{{18,19,20},{21,22,23},{24,25,26}}};