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包含相同的引用,他们都指向相同的对象。