Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么';别名在java方法中是否有效?_Java - Fatal编程技术网

为什么';别名在java方法中是否有效?

为什么';别名在java方法中是否有效?,java,Java,在下面的代码中,我试图创建一个mutator方法来改变输入列表。当我编写相同的代码而不使用方法时,它会工作并打印鼠标。但是,当我在下面创建mutate方法时,House被打印出来,而不是鼠标。请解释为什么行inputList=temp不工作 public class Demo { public static void main(String[] args) { List<String> list = new ArrayList<String>()

在下面的代码中,我试图创建一个mutator方法来改变输入列表。当我编写相同的代码而不使用方法时,它会工作并打印
鼠标
。但是,当我在下面创建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();
添加(“鼠标”);
}

这可能有助于您了解正在发生的事情这可能有助于您了解正在发生的事情