joh*_*nny 5 java multidimensional-array
我试图理解Java中的多维数组,但我认为它适用于任何语言.请考虑我在网上找到的这个代码段:
//************************************
// static array initialization
//************************************
byte[][] smallArray = { { 10, 11, 12, 13 },
{ 20, 21, 22, 23 },
{ 30, 31, 32, 33 },
{ 40, 41, 42, 43 }, };
// Display the array element at row 2, column 3
System.out.println(smallArray[1][2]);
// Value is 21
Run Code Online (Sandbox Code Playgroud)
为什么是21?我以为会是22岁.
我查了一下,因为我试图弄清楚在这种情况下长度意味着什么:
public class Pieces {
int thePieces[][][];
public Pieces(){
}
public int[][][] createPieces(){
/* pieces in order below
**** [0]
**
**
*
****
*
****
***
*
**
**
**
** [6]
*
*
*
*/
int myPieces [][][] =
{
{ //square
{0,0},
{1,0},
{1,1},
{0,1}
},
{ //T
{-1,0},
{0,0},
{0,1},
{1,0}
}
};
thePieces = myPieces;
return thePieces;
}
public void printPieces(){
System.out.println(thePieces[0][0].length);
}
}
Run Code Online (Sandbox Code Playgroud)
我试图通过创建一个俄罗斯方块克隆来学习java.我不明白为什么长度需要使用[] [].这是我开始工作的唯一方式.我试过thePieces [0] [0] [0] .length但得到了一个我不理解的错误?
为什么我不必把[] [] []来获取参考?我在网上看到数组的第一个"级别"引用myArray.length而不是myArray [] .length.然后我用myArray [] [].长度(看起来是第2级,第3级,但是我没有得到我期望的)?
我跑了我的片段代码得到2.我不知道为什么它是两个.是因为我在第三级有两套?由于四组积分,我预计会得到四分.
谢谢你帮助我理解.
编辑:我弄清楚为什么它是两个.它给了我在最里面的两点.如果我想要四个,我会使用thePieces [0] .length.但是第一个例子怎么样?这是一个错字吗?
为什么是21?我以为会是22岁.
22是正确的 - 我运行代码来验证它.
索引引用数组元素,从外部元素到内部元素.所以,
myPieces[0]是{ {0,0}, {1,0}, {1,1}, {0,1} }(包含数组的数组),
myPieces[0][0]是{0,0}(包含整数的数组),
myPieces[0][0][0]是0(一个int).