任何人都可以解释一下这个程序的输出是如何为 14 的,以及为什么我们将数组声明为 int[]...函数 go 参数列表中的 z。
public class Venus
{
public static void main(String[] args)
{
int [] x = {1,2,3};
int y[] = {4,5,6};
new Venus().go(x,y);
}
void go(int[]... z)
{
for(int[] a : z)
System.out.print(a[0]);
}
}
int[]...
表示法是varargs表示法。
这意味着您的go(int[]... z)
方法接受多个int[]
作为参数。在方法内部,z
int[][]
类型的 int 。
因此,go
所做的是,对于z
中的每个int数组a
,它打印a
的第一个元素。这就是为什么打印1
(x[0]
)然后打印4
(y[0]
)=> 14
<</p>
,方法 go 采用一个 int 数组数组:
void go(int[]... z)
其次,你传递了 x 和 y 数组。
new Venus().go(x,y);
然后要求打印每个数组中的第一个元素
for(int[] a : z) // a is a temp veriable hold one element from the passed array of array and z represents the array of int arrays which is {x, y}
System.out.print(a[0]);
所以输出是 14
该方法go
接受可变长度的 int 数组序列,循环访问参数,并打印每个参数的第一个元素。当你传递 x 和 y 时,它会打印 x 的第一个元素(即 1)和 y 的第一个元素(即 4),即 14。
作为您的示例
int [] x = {1,2,3};
int y[] = {4,5,6};
new Venus().go(x,y);
当它调用 go(int[]...z) 实际上确实如此
int[][] z = {{1,2,3},{4,5,6}};
因为它的数组大小是两个。所以循环会转动 2 次
循环 1:
int[]a = z[0]; // z[0] is {1,2,3}
System.out.print(a[0]); // a[0] is 1
循环 2:
int[]a = z[1]; //z[1] is {4,5,6}
System.out.print(a[0]); // a[0] is 4