以下代码的输出应该是什么?为什么? 输出结果是131713.下面是代码。对象引用正在交换,因此值正在发生变化。
public class Test {
int age;
String name;
Test(int age,String name) {
this.age=age;
this.name=name;
}
public static void main(String[] args){
Test t1 = new Test(17,"A");
Test t2 = new Test(13,"B");
Test t3 = new Test(14,"C");
t3=t2;
t2=t1;
t1=t3;
System.out.print(t1.age);
System.out.print(t2.age);
System.out.print(t3.age);
}
}
答案 0 :(得分:0)
更改引用变量的值不会修改它引用的对象内的任何内容。但它可以使该变量引用不同的对象。变量独立于对象而存在。这可以如下图所示进行可视化。
创建三个对象后,就会出现这种情况。
/ \ / \ / \
| | | | | |
t1-> | 17 A | t2-> | 13 B | t3-> | 14 C |
| | | | | |
\ / \ / \ /
然后你改变t3指的是什么,所以你有
/ \ / \ / \
| | t2-> | | | |
t1-> | 17 A | | 13 B | | 14 C |
| | t3-> | | | |
\ / \ / \ /
然后你改变t2指的是什么,所以你有
/ \ / \ / \
t1-> | | | | | |
| 17 A | t3-> | 13 B | | 14 C |
t2-> | | | | | |
\ / \ / \ /
你改变t1指的是什么,所以你有
/ \ / \ / \
| | t1-> | | | |
t2-> | 17 A | | 13 B | | 14 C |
| | t3-> | | | |
\ / \ / \ /
然后你开始打印东西。如上面的最终图所示,t1.age
和t3.age
都是13
,t2.age
是17
。