在 java 程序中,我希望通过调用单个函数来修改 3 个数组列表变量。
我是否正确地认为如果我将这 3 个数组列表作为参数传递给该函数,那么所有 3 个都可以在函数内进行修改?或者我是否必须在单独的函数中修改每个数组列表,并将该数组列表指定为返回值,以确保它被修改。
我是否正确地认为如果我将这 3 个数组列表作为参数传递给该函数,那么所有 3 个都可以在函数内进行修改?
一句话,是的。
值得注意的是,您问题标题中的“通过引用”术语并不完全正确。在 Java 中,一切都是按值传递的,包括对象引用。事实上,这三个ArrayList
参数本身就是引用,这使得对列表所做的任何更改都传播回调用者。
是的,您可以将 3 ArrayList
s 作为参数传递给该方法。它们被视为任何其他对象。
至于是否返回另一个ArrayList
,这在很大程度上取决于方法必须做什么。
以下代码类似于“通过引用调用”:
package arrayList;
import java.util.ArrayList;
public class CallByValueReference {
class myObject {
String str;
public myObject(String str) {
super();
this.str = str;
}
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
@Override
public String toString() {
return "myObject [str=" + str + "]";
}
}
ArrayList<myObject> strArray = new ArrayList<myObject>();
public static void main(String[] args) {
new CallByValueReference().test();
}
private void test() {
strArray.add(new myObject("entry1") );
System.out.println(strArray);
strArray.get(0).setStr("entry2");
System.out.println(strArray);
}
}
输出是:
[myObject [str=entry1]]
[myObject [str=entry2]]