为什么说JAVA只有值传递呢?如下代码
public class TestSwap {
public static void main(String... args){
Student1 s1 = new Student1(20,"小周");
Student1 s2 = new Student1(13,"瑞瑞");
TestSwap swap = new TestSwap();
swap.swap(s1,s2);
// swap.swap1(s1,s2);
System.out.println("s1:"+s1.getName());
System.out.println("s2:"+s2.getName());
}
private void swap(Student1 x, Student1 y){
Student1 temp = x;
x = y;
y = temp;
System.out.println("x:"+x.getName());
System.out.println("y:"+y.getName());
}
private void swap1(Student1 x, Student1 y){
String temp = x.getName();
x.name = y.getName();
y.name = temp;
System.out.println("x:"+x.getName());
System.out.println("y:"+y.getName());
}
public static class Student1{
int age;
String name;
public Student1(){
}
public Student1(int age, String name) {
this.age = age;
this.name = name;
}
public String getName() {
return name;
}
}
}
调用swap的输出结果 | x:瑞瑞 ,y:小周 , s1:小周 , s2:瑞瑞 |
---|---|
调用swap1的输出结果 | x:瑞瑞 ,y:小周 ,s1:瑞瑞 ,s2:小周 |
以上输出结果说明
- 一个方法可以改变一个对象参数的状态。(swap1方法可以让Student对象的name调换)
- 一个方法不能让对象参数引用一个新的对象。(swap方法不可以让一个对象引用指向另一个对象)