在java程序中,我希望通过调用单个函数来修改3个arraylist变量。
我是否认为如果我将这3个arraylists作为参数传递给该函数,那么我可以在函数中修改所有3个吗?或者我是否必须在单独的函数中修改每个arraylist,并将该数组列表指定为返回值,以确保它被修改。
答案 0 :(得分:8)
我是否认为如果我将这3个arraylists作为参数传递给该函数,那么我可以在函数中修改所有3个吗?
总之,是的。
值得注意的是,问题标题中的“引用”术语并不完全正确。在Java中,所有内容都按值传递,包括对象引用。事实上,三个ArrayList
参数是引用本身,这使得对列表所做的任何更改都会传播回调用者。
答案 1 :(得分:0)
是的,您可以将3 ArrayList
s作为参数传递给方法。他们被视为任何其他对象。
至于是否要返回另一个ArrayList
,这很大程度上取决于该方法必须做什么。
答案 2 :(得分:0)
以下代码的作用类似于“按引用调用”:
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]]