class Test{
String name;
int age;
public Test(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Test{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class First {
public static void main(String[] args) {
int a = 123;
int b = 234;
hand1(a, b);
System.out.println(a);
System.out.println(b);
Test t1 = new Test("张三", 18);
Test t2 = new Test("李四", 19);
hand2(t1, t2);
System.out.println(t1);
System.out.println(t2);
}
private static void hand1(int a, int b) {
int c = a;
a = b;
b = c;
}
private static void hand2(Test t1, Test t2) {
Test t = t1;
t1 = t2;
t2 = t;
}
}
看上方代码,结果是什么? 为什么没有进行值的交换?
是因为在执行hand方法时会创建t1’、t2’,且跟t1、t2指向的一样;是t1’和t2‘进行的交换,当方法执行完后,出栈。但是,t1和t2还是指向原来的,并没有改变。
那如何才能让两个对象进行交换呢?
这样即可。
|