首先通过代码看一下,
public class Ren {
private int age;
public Ren(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class Test20140723 {
public static void main(String[] args) {
Ren r1 = new Ren(15);
new Test20140723().change(r1);
System.out.println(r1.getAge());
}
private void change(Ren r1) {
Ren r2 = new Ren(10);
r1 = r2;
System.out.println("---" + r1.getAge());
}
}
输出的结果是什么?
是:
---10
15
说明change没有改变外面r1的值,我们来画个图加深一下理解。
在传入change方法的时候 相当于cope了一个r1指向15,然后又new了一个r2指向10,然后r1=r2把change方法里面的r1指向了10,但是原来在main方法里面的r1还是指向15。