如何参考多维数组?

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.但是第一个例子怎么样?这是一个错字吗?

Kal*_*see 5

为什么是21?我以为会是22岁.

22是正确的 - 我运行代码来验证它.

索引引用数组元素,从外部元素到内部元素.所以,

myPieces[0]{ {0,0}, {1,0}, {1,1}, {0,1} }(包含数组的数组), myPieces[0][0]{0,0}(包含整数的数组), myPieces[0][0][0]0(一个int).