Java中参数传递只有值传递一种,没有所谓的引用传递。当传递一个对象的实例时,实际上只是传递该实例引用的一个副本,而不是引用本身。
比如下面的例子:
public class A {
public String str = "我是初始值";
public void change1(String str) {
str = "我改变了";
}
public void change2() {
str = "我改变了";
}
}
public class Test {
public static void main(String[] args) {
A a = new A();
a.change1(a.str);
System.out.println(a.str);
System.out.println("---------");
a.change2();
System.out.println(a.str);
}
}
程序运行结果:
我是初始值
---------
我改变了
change1方法接受String类型的参数,当调用这个方法并把a对像的str传过来时,实际上传递的是指向a对象str引用的副本,因此a.str并不会改变。而change2中直接操作a对象的str引用,所以最后一句打印“我改变了”