我在这个程序中的z类型数组声明有问题



任何人都可以解释一下这个程序的输出是如何为 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的第一个元素。这就是为什么打印1x[0])然后打印4y[0])=> 14<</p>

div class="ans> 首先

,方法 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

最新更新