为什么';别名在java方法中是否有效?
在下面的代码中,我试图创建一个mutator方法来改变输入列表。当我编写相同的代码而不使用方法时,它会工作并打印为什么';别名在java方法中是否有效?,java,Java,在下面的代码中,我试图创建一个mutator方法来改变输入列表。当我编写相同的代码而不使用方法时,它会工作并打印鼠标。但是,当我在下面创建mutate方法时,House被打印出来,而不是鼠标。请解释为什么行inputList=temp不工作 public class Demo { public static void main(String[] args) { List<String> list = new ArrayList<String>()
鼠标
。但是,当我在下面创建mutate方法时,House
被打印出来,而不是鼠标
。请解释为什么行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;
}
}
公共类演示{
公共静态void main(字符串[]args){
列表=新的ArrayList();
列表。添加(“房屋”);
变异(列表);
系统输出打印项次(列表);
}
公共静态void mutate(列表输入列表){
List temp=new ArrayList();
临时添加(“鼠标”);
输入列表=温度;
}
}
Java是一种传递值语言
人们有时会(错误地)声称它是一种通过引用传递的语言,因为所有对象都是通过引用来引用的,所以传递的值都是引用;但是像inputList
这样的参数仍然是一个局部变量,因此分配给它(inputList=…
)只会影响该局部变量。它不是调用方法中任何变量的别名
但是,您当然可以修改inputList
引用的特定ArrayList
实例:
public static void mutate(final List<String> inputList){
inputList.clear();
inputList.add("Mouse");
}
publicstaticvoidmutate(最终列表inputList){
inputList.clear();
添加(“鼠标”);
}
Java是一种传递值语言
人们有时会(错误地)声称它是一种通过引用传递的语言,因为所有对象都是通过引用来引用的,所以传递的值都是引用;但是像inputList
这样的参数仍然是一个局部变量,因此分配给它(inputList=…
)只会影响该局部变量。它不是调用方法中任何变量的别名
但是,您当然可以修改inputList
引用的特定ArrayList
实例:
public static void mutate(final List<String> inputList){
inputList.clear();
inputList.add("Mouse");
}
publicstaticvoidmutate(最终列表inputList){
inputList.clear();
添加(“鼠标”);
}
这可能有助于您了解正在发生的事情这可能有助于您了解正在发生的事情