[英]Java constructors assingning value to variable and then interchanging them
以下代码的输出应该是什么,为什么? 输出结果是 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);
}
}
更改引用变量的值不会修改它所引用的对象内部的任何内容。 但它可以使该变量引用不同的对象。 变量独立于对象存在。 这可以如下图所示进行可视化。
创建三个对象后,您会遇到这样的情况。
/ \ / \ / \
| | | | | |
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
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.