我们会看一些代码片段来查看并找出代码的作用/将会做什么。
我理解数组的方法和方法,但我从未见过methodName(int[][] m)
有两个[][]
这是什么意思?数组中的数组?
答案 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