JAVA里的所有参数传递都是值传递,理解啊!
举个例子更好的理解一下:
public class Main{
public static void main(String[] args) {
File file = new File("test.txt");
f(file);
System.out.println("file=" + file);
}
public static void f(File fileParam){
fileParam = null;
}
}
上述代码执行完毕,输出结果是:file=test.txt,而不是file=null
原理分析:
当调用f(file);时,fileParam是拷贝了一份实参file的值,只不过这里file的值是一个引用,因此fileParam也指向了内存中的test.txt文件实例对象,所以此时内存中的test.txt文件实例对象共有2个引用变量指向它,当f(file);执行完毕后,此时fileParam置为null,即不指向任何对象,但此时实参file仍然指向内存中的test.txt文件实例对象,因此输出结果是:file=test.txt。