(int [] [])的方法是什么意思?

时间:2015-06-17 01:33:39

标签: java

我们会看一些代码片段来查看并找出代码的作用/将会做什么。

我理解数组的方法和方法,但我从未见过methodName(int[][] m)有两个[][]

这是什么意思?数组中的数组?

5 个答案:

答案 0 :(得分:10)

方法签名中的

int[][]指的是一个双整数数组。您可以将双整数数组视为int值的矩阵

以您的示例2D数组:

int[][] in = {{2, 0, 2}, {3, 1, 2}, {1, 8, 4}};

此数组具有以下属性:

System.out.println(in.length);     // prints 3 (number of arrays inside 'in')
System.out.println(in[0].length);  // prints 3 (number of ints in first array)
System.out.println(in[1].length);  // also prints 3 (number of ints in second array)

这是一个视觉效果,向您展示如何访问此数组:

int a = 1;
int b = 0;

然后in[a][b] == in[1][0] == 3

 2 0 2
{3 1 2} <-- a = 1 (second subarray)
 1 8 4

{3 1 2}
 ^-- b = 0 (first element in that subarray)

第一个索引a选择子阵列,索引b选择子阵列中的元素

答案 1 :(得分:2)

它表示给定数据类型的多维数组(AKA数组或数组)。 认为层次结构是理解它的最佳方式。 如果你有int [3] [2],那就意味着, 它为以下每个索引保留值。

int[0][0]
int[0][1]
int[1][0]
int[1][1]
int[2][0]
int[2][1]

希望它会有所帮助。当我是初学者时,我很努力地理解它。 可能的分配是

int[3][2] iValue = {{00,01}, {10,11}, {20, 21}}

感谢您的纠正。

答案 2 :(得分:1)

methodName(int[] [])是一个数组数组。为了回应所有评论,我在日食中测试了它,长度为3。

答案 3 :(得分:0)

在许多编程语言(包括Java)中,可以创建(和使用)数组数组。在Java(特别是)中,所有数组都是Object个实例。考虑

Object intArray1 = new int[10];
Object intArray2 = new int[10];
Object intArray3 = new int[10];

然后你可能有

Object[] arrs = { intArray1, intArray2, intArray3 };

甚至

Object arrs = new Object[] { intArray1, intArray2, intArray3 };

JLS-15.10.1 Run-Time Evaluation of Array Creation Expressions说(部分)

  

否则,如果出现n DimExpr个表达式,则数组创建会有效地执行一组深度为n-1的嵌套循环,以创建隐含的数组数组。

     

多维数组不需要在每个级别具有相同长度的数组。

最后,Javadoc有Arrays.deepToString(Object[])(部分)

  

返回指定数组的“深层内容”的字符串表示形式。如果数组包含其他数组作为元素,则字符串表示包含其内容,依此类推。此方法用于将多维数组转换为字符串。

答案 4 :(得分:0)

在Java中,“ int [] [] ”代表 2维整数数组。为了便于理解,我们只需将2-d整数数组与简单的1-d整数数组进行比较;

1)在下面,初始化1-d int数组;

int[] arr1d = { 1,2,3 };

2)在这个上,初始化了一个2-d int数组;

int[][] arr2d = { {1,2,3}, {4,5,6} };

理解2d数组的结构很重要。如果您打印 arr2d 的长度,您将得到2个数组的行,即2。

System.out.println(arr2d[].length);

您将获得外部数组的长度,这实际上是数组的行数。

获取内部数组长度,实际上是列数;

System.out.println(arr2d[0].length);

请注意,我们取第一行,得到内部数组的长度并打印列号。

要熟悉方法中二维数组的用法,可以查看它;

private static void printIntegerArray(int[][] intArray) {
    for(int i = 0; i < intArray.length; i++ ) {
        for(int j = 0; j < intArray[i].length; j++ ) {
            System.out.printf("%3d ", intArray[i][j]);
        }
        System.out.println();
    }
}

在这个静态方法中, int [] [] intArray 是唯一一个显然是二维int数组的参数。有两个嵌套的for循环将数组打印为矩阵。外部循环遍历行,内部循环遍历内部循环。

以下是2D方法用法的完整示例;

公共类Test2DArray {

public static void main(String[] args) {
    //Init 2d integer list
    int simpleArray[][] = { {1,2,3,4,5}, {6,7,8,9,10}, {11,12,13,14,15} };

    //Length of outer array which is actually Row Count;
    System.out.println("Rows   : " + simpleArray.length);

    //Length of inner array which is actually Column Count;
    //Notice that we take the first Row to get the Column length
    System.out.println("Columns: " + simpleArray[0].length);

    //Call the printIntegerList method with int[][] parameter
    printIntegerArray(simpleArray);
}

private static void printIntegerArray(int[][] intArray) {
    for(int i = 0; i < intArray.length; i++ ) {
        for(int j = 0; j < intArray[i].length; j++ ) {
            System.out.printf("%3d ", intArray[i][j]);
        }
        System.out.println();
    }
}

}

控制台的输出如下;

Rows   : 3
Columns: 5
  1   2   3   4   5 
  6   7   8   9  10 
 11  12  13  14  15