-1

有人可以告诉我如何实现以下目标。Java 不是我的强项,在尝试搜索后,我不断获取有关 javas 的页面总是通过引用传递。

void edit(int[] a){
    a = new String[]{"q","r","s","t","u"};
}

int[] x = new int[]{"a","b","c"};
edit(x);
System.out.println(x); // ["q","r","s","t","u"]    

我试图实现上述目标,以便在将 x 的指针传递给函数后可以更改它。

感谢你的帮助

4

1 回答 1

5

Java纯粹是按值传递。您不能在方法中执行任何更改用作方法参数的变量的值的任何操作。这在 Java 中根本不可能。

在您的示例中,您可以更改数组的内容,但不能更改数组x所指的内容。你会这样做:

void edit(int[] a) {
   a[0] = 1;
   a[1] = 2;
   a[2] = 3;
}

请注意这里的区别:您可以更改数组引用的内容x,但不能x从内部更改edit。因此,例如,您不能更改数组的长度,因为这样做的唯一方法是创建一个新数组并指向x它,而您不能在edit.

其他选项:

  • 返回edit一个新数组,然后将其分配给x.
  • 使用List,因此您可以更改元素的数量。
  • 创建一个具有可变属性的类并传入该类的一个实例。
于 2013-10-27T11:19:41.717 回答