首页 文章

Java构造函数将变量赋值,然后交换变量

提问于
浏览
-3

以下代码的输出应该是什么?为什么?输出结果是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);
    }    
}

1 回答

  • 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.aget3.age 都是 13t2.age17 .

相关问题