有人可以告诉我如何实现以下目标.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的指针.
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
,这样您就可以更改有多少元素.