结论:Java中一个方法的参数如果是引用类型(即对象),则在方法中传入的是原对象的一个新的引用副本。
这个方法可以通过该引用副本改变这个对象的内部属性值,但不能改变对象原来的引用。
下面放一个代码实例,很容易就看懂了
class Student{
String name;
int age;public Student(String name, int age) {
this.name = name;
this.age = age;
}}
public class Solution{
public static void main(String[] args) {
Student a = new Student("A",10);
Student b = new Student("B",11);
swap(a,b);
System.out.println("a.age=" + a.age + " b.age=" + b.age);
change(a,20);
System.out.println("a.age=" + a.age + " b.age=" + b.age);
}
public static void swap(Student a,Student b){
Student tmp = b;
b = a;
a = tmp;
}
public static void change(Student a,int age){
a.age = age;
}
}
输出结果如下:
a.age=10 b.age=11
a.age=20 b.age=11
可以看到,在swap方法中,我试图更改原对象的引用,但是失败了。
但在change中更改了对象的age属性,这是可行的。