为什么在设置ArrayList时,不需要返回值?

时间:2015-04-11 15:38:19

标签: java arraylist initialization pass-by-reference

我是java的新手,我正在编写一些代码来练习,但有些东西我很困惑。我有以下代码:

public class test {
    public static void main(String[]args) {
        int n = 0;
        ArrayList<String> fruits = new ArrayList();
        setList(fruits);
        n =setInt(9);

        // get the values from fruits
        for (String value: fruits) {
            print(value);
        }
    }

    public static void setList( ArrayList list) {
        list.add("pear");
        list.add("apple");
        list.add("pear");
    }

    public static int setInt(int number) {
        number = 3;
        return number;
    }
}

我的问题是为什么为了设置我的Arraylist()没有必要返回任何值,但为了设置我的int我需要返回一些东西。如果运行此代码它会打印我的列表中的所有值,但我希望不打印任何东西,因为在我的方法setList中我没有返回任何值。如果我没有使用我的setInt返回任何值,则n的值不会改变,这对我来说是有意义的。 谢谢。

1 个答案:

答案 0 :(得分:1)

params在函数中传递的方法有很多种。大多数初学者开始使用的常用方法是按值传递。另一种方式是通过引用传递。在通过引用传递时,对象本身是传入的,而不是传递值的副本。这意味着任何更改都会影响param并保留,即使在调用之后也是如此。 java中的所有对象都是通过引用传递的,只有基元通过值传递。因此,这就是您在使用arraylist对象时不必返回的原因。

编辑:实际上,我犯了一个错误。实际发生的是引用本身的副本正在通过值传递。看看这个。 Everything in Java is Pass by Value.