Java中2D数组的声明和格式

时间:2014-02-28 14:15:32

标签: java arrays multidimensional-array 2d

我最近与一位朋友讨论了Java中多维数组的声明。 它将涉及以下类型的数组:

int[][] array = new int[2][3];

到目前为止一直很好,但是我们其中一个人将这个数组视为2个数组,每个数组包含3个元素,另一个数组将其视为3个数组,每个数组包含2个元素。所以A人认为这是正确的声明:

int[][] array = new int[][]{{0,1,2},{3,4,5}};

而B人认为这是正确的声明:

int[][] array = new int[][]{{0,1},{2,3},{4,5}};

我们谁是正确的?那个人怎么能证明他是对的?

谢谢:)

5 个答案:

答案 0 :(得分:2)

如果您运行此代码:

    int[][] array = new int[2][3];
    System.out.println(array[0].length);
    System.out.println(array[1].length);

输出是:

3
3

这意味着,那个人A是对的。

答案 1 :(得分:0)

人A是正确的。

此代码的输出:

import java.util.Arrays;
public class Test
{
    public static void main(String[] args)
    {
        int[][] array1 = new int[2][3];
        //int[][] array2 = new int[3][2];

        System.out.println(intArray2DToString(array1));
        //System.out.println(intArray2DToString(array2));
    }

    /**
     * Converts a 2D int array to a string
     */
    static String intArray2DToString(int[][] array2D)
    {
        String str = "[";
        for(int[] array : array2D)
        {
            str += Arrays.toString(array);
            str += ", ";
        }
        str += "]";
        str = str.replaceAll(", (?=])", "");
        return str;
    }
}

是:

[[0, 0, 0], [0, 0, 0]]

答案 2 :(得分:0)

以下代码可能会对数组在Java中的工作方式有所了解:

int[][] array=new int[1][3];
int[] sub=array[0];
sub[0]=1; sub[1]=2; sub[2]=42;
System.out.println(Arrays.deepToString(array));
array=new int[2][];
System.out.println(Arrays.deepToString(array));
array[0]=sub; array[1]=sub;
System.out.println(Arrays.deepToString(array));

答案 3 :(得分:0)

基本上二维数组的语法如下,

DataType arrayName[ ][ ] = new int[rowsize][columnsize];

很明显,人A是对的。

要清除混淆,请参考Java中2d数组上的this资源。

答案 4 :(得分:-3)

int[][] array = new int[2][3];

结构大致如下:

[[x, x], [x, x], [x, x]]