如何将变量传递的指针更改为函数

时间:2013-10-27 11:18:19

标签: java reference

有人可以告诉我如何实现以下目标。 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的指针。

感谢大家的帮助

1 个答案:

答案 0 :(得分:5)

Java 纯粹传递值。在一个方法中,你不能做任何事情来改变用作方法参数的变量的值。它在Java中是不可能的。

在您的示例中,您可以更改数组的内容,您无法更改引用的数组x。你这样做是这样的:

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

请注意这里的区别:您可以更改x引用的数组的内容,但不能在x内更改edit。因此,例如,您无法更改数组的长度,因为唯一的方法是创建一个新数组并在其上指向x,而您不能在{{1}内执行此操作}。

其他选择:

  • edit返回一个新数组,然后将其分配给edit
  • 使用x,这样您就可以更改有多少元素。
  • 创建一个具有可变属性的类,并在。
  • 中传递该类的实例