看看这样写结果
ArrayList treeList = new ArrayList();
ArrayList syList = new ArrayList();
treeList=syList;
我想问 这样之后 syList中的值是否会把treeList中的值给覆盖掉
想好再说 别让我搞笑了 我自己感觉是可以的呵呵
------解决方案--------------------
你的理解有错误:new开辟了2个内存空间,分别存储内容;treeList和syList分别指向相应的内容空间(及‘引用’的概念);重新赋值后,treeList指向了syList的内存地址,所以,当遍历气内容时,就是syList中的内容。java里面的垃圾回收机制会在合适的时候回收你不使用的内存。
------解决方案--------------------
在一般情况下
Object a = new Object();
Object b = new Object();
b = a; //这个时候 b原来指向的对象如果没有其他的引用标识会被JVM垃圾清理机制清理掉,而不是你所说的被覆盖,只是单纯的a指向了b原来指向的对象而已
你要知道a和b不代表对象,只是一个指向对象的标示符号
打个比方,你有一张到成都的火车票,这张火车票并不代表成都
b = a这个操作就好像把你手中的火车票的目的地从成都改成了北京
而北京和成都都就在那里,和你手中的火车票指向哪里没有关系
但是如果没有一个人的火车票是到北京的,那JVM就认为这个玩意已经没有意义可以被清理了