4

在 java 程序中,我希望通过调用单个函数来修改 3 个数组列表变量。

我是否正确地认为如果我将这 3 个数组列表作为参数传递给该函数,那么所有 3 个都可以在函数内进行修改?或者我是否必须在单独的函数中修改每个数组列表,并将该数组列表指定为返回值,以确保它被修改。

4

3 回答 3

9

我是否正确地认为如果我将这 3 个数组列表作为参数传递给该函数,那么所有 3 个都可以在函数内进行修改?

一句话,是的。

值得注意的是,您问题标题中的“通过引用”术语并不完全正确。在 Java 中,一切都是按值传递的,包括对象引用。事实上,这三个ArrayList参数本身就是引用,这使得对列表所做的任何更改都传播回调用者。

于 2012-05-26T13:58:40.370 回答
0

是的,您可以将 3 ArrayLists 作为参数传递给该方法。它们被视为任何其他对象。

至于是否返回另一个ArrayList,这在很大程度上取决于方法必须做什么。

于 2012-05-26T13:58:47.873 回答
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]]
于 2017-03-13T15:34:05.280 回答