别名现象
发生在为对象赋值的时候。对一个对象进行操作时,我们真正操作的是对对象的引用。所以倘若“将一个对象赋值给另一个对象”,实际是将“引用”从一个地方复制到另一个地方。这意味着假若对对象使用c=d,那么c和d都将指向原本只有d指向的那个对象。
因为赋值操作的是一个对象的引用,所以修改a的同时也改变了b。(原本a包含的对对象的引用,是指向一个值为9.9的对象。在对a赋值的时候,这个引用被覆盖,也就是丢失了;而那个不再被引用的对象会由“垃圾回收器”自动清理。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| class Tank{ float level; } public class test1 { public static void main(String[] args) { Tank a = new Tank(); Tank b = new Tank(); a.level = 9.9f; b.level = 47.7f; System.out.println("" + a.level + " " + b.level); a = b; System.out.println("" + a.level + " " + b.level); a.level = 27.7f; System.out.println("" + a.level + " " + b.level); } }
|
结果
避免“别名现象”