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

kjo*_*876 -1 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"]    
Run Code Online (Sandbox Code Playgroud)

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

感谢你的帮助

T.J*_*der 5

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

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

void edit(int[] a) {
   a[0] = 1;
   a[1] = 2;
   a[2] = 3;
}
Run Code Online (Sandbox Code Playgroud)

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

其他选择:

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