public class SendValue
{
public String str="6";
public static void main(String[] args) {
SendValue sv=new SendValue();
sv.change(sv.str);
System.out.println(sv.str);
}
public void change(String str) {
str="10";
}
}
输出结果:6
解析:Java中String类型变量是immutable(不可变的)。
尽管
change()方法中的str与sv.str都是新的对象实例成员变量值"6"的引用,
由于String类型的
不可变
性,change()方法中的str="10"语句实际上是将传入的str
副本引用指向了一个值为“10”的新的内存地址,
但
原数据引用
sv.str的引用值(也就是“6”的内存地址)
并没有发生改变,因此sv.str指向的值仍旧为6.