美文网首页
Java中的别名问题

Java中的别名问题

作者: 云烟渐成雨 | 来源:发表于2019-06-15 17:59 被阅读0次
class Tank{
    int level;
}

public class Assignment {
    public static void main(String[] args){
        Tank t1 = new Tank();
        Tank t2 = new Tank();
        t1.level = 9;
        t2.level = 47;
        System.out.println("t1.level:"+t1.level+"  t2.level:"+t2.level);
        t1 = t2;
        System.out.println("t1.level:"+t1.level+"  t2.level:"+t2.level);
        t1.level = 27;
        System.out.println("t1.level:"+t1.level+"  t2.level:"+t2.level);
    }

}

运行结果

t1.level:9  t2.level:47
t1.level:47  t2.level:47
t1.level:27  t2.level:27

对每个Tank类对象的level域都赋予了一个不同的值,然后,将t2赋给t1,接着又修改t1。在许多编程语言中,我们可能期望t1和t2总是相互独立的。但由于赋值操作的是一个对象的引用,所以修改t1的同时也改变了t2!这是由于t1和t2包含相同的引用,他们都指向相同的对象。

相关文章

网友评论

      本文标题:Java中的别名问题

      本文链接:https://www.haomeiwen.com/subject/nvtifctx.html