gpt4 book ai didi

java - 为什么别名在 java 方法中不起作用?

转载 作者:行者123 更新时间:2023-12-02 03:58:56 25 4
gpt4 key购买 nike

在下面的代码中,我尝试创建一个更改输入列表的更改器(mutator)方法。当我编写相同的代码并且不使用方法时,它会工作并打印 Mouse 。但是,当我创建下面的 mutate 方法时,House打印而不是 Mouse 。请解释为什么行 inputList = temp不工作。

public class Demo {

public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("House");
mutate(list);
System.out.println(list);
}

public static void mutate(List<String> inputList){
List<String> temp = new ArrayList<String>();
temp.add("Mouse");
inputList = temp;
}
}

最佳答案

Java 是一种按值传递语言。

人们有时会(错误地)声称它是一种引用传递语言,因为所有对象都是通过引用引用的,因此您传递的值都是引用;但像 inputList 这样的参数仍然是局部变量,因此为其赋值 (inputList = ...) 只会影响该局部变量。它不是调用方法中任何变量的别名。

但是,您当然可以更改 inputList 引用的特定 ArrayList 实例:

public static void mutate(final List<String> inputList){
inputList.clear();
inputList.add("Mouse");
}

关于java - 为什么别名在 java 方法中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35107895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com