在此for循环代码中如何运行3次,这里的argcopy数组大小为2,据我所知,一旦创建数组,其大小就无法更改。
class test { //line 1
public static void main(String[] args) { //line 2
String[][] argcopy = new String[2][2]; //line 3
String arg[] = new String[3]; //line 4
int x; //line 5
arg[0] = "1"; //line 6
arg[1] = "2"; //line 7
arg[2] = "3"; //line 8
argcopy[0] = arg; //line 9
x = argcopy[0].length; //line 10
for (int y = 0; y < x; y++)
{
System.out.println(" " + argcopy[0][y]); //line 11
}
}
}
答案 0 :(得分:2)
一旦创建数组,其大小便无法更改
是的,但是argcopy[0]
是对String[]
(一个String
数组)的引用。
分配给它时:
argcopy[0] = arg;
它引用的数组与最初引用的数组不同。它引用的原始数组的长度为2
,而引用的新数组的长度为3
。
答案 1 :(得分:0)
行argcopy[0] = arg;
将数组arg
设置为数组argcopy
的第一个元素。
行x = argcopy[0].length;
将x
设置为数组argcopy
的第一个元素的长度,即3
。
由于您使用y < x
测试了循环,因此循环将运行3次。
答案 2 :(得分:0)
2D数组只是数组的数组。这意味着您甚至不必为second dimension
分配存储空间。这也使您可以得到参差不齐的数组,如下所示。
int[][] raggedArray = new int[5][];
raggedArray[0] = new int[]{1,2,3};
raggedArray[1] = new int[]{4,5,6,7,8,9};
raggedArray[2] = new int[]{10,12,13,14};
raggedArray[3] = new int[]{15};
raggedArray[4] = new int[]{16,17,18,19,20};
for (int[] array : raggedArray) {
System.out.println(Arrays.toString(array));
}
每个新数组只是一个object
,已分配给所需的位置。