【问题标题】:Why when you set an ArrayList, there is no need to return a value?为什么设置ArrayList时不需要返回值?
【发布时间】:2015-04-11 15:38:19
【问题描述】:

我是 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 的值不会改变,这对我来说很有意义。 谢谢。

【问题讨论】:

    标签: java arraylist initialization pass-by-reference


    【解决方案1】:

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

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

    【讨论】:

    • 很抱歉投了反对票,但是“Java 中的所有对象都通过引用传递” 不正确。请阅读:Is Java "pass-by-reference" or "pass-by-value"?
    • “Java 中的一切都是通过引用传递的。” 我们不是刚刚了解到,一切都是通过值传递的吗? ;P
    • @Tom Ops,我会解决的。谢谢
    猜你喜欢
    • 1970-01-01
    • 2019-07-20
    • 2019-06-14
    • 2021-01-17
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多