看看这样写结果
ArrayList  treeList = new ArrayList();
ArrayList  syList   = new ArrayList();treeList=syList;我想问   这样之后  syList中的值是否会把treeList中的值给覆盖掉
想好再说  别让我搞笑了  我自己感觉是可以的呵呵

解决方案 »

  1.   

    补充一下   2个  List  都是有值的  不是空的  这里 只是简单的  new了一下
      

  2.   

    你的理解有错误:new开辟了2个内存空间,分别存储内容;treeList和syList分别指向相应的内容空间(及‘引用’的概念);重新赋值后,treeList指向了syList的内存地址,所以,当遍历气内容时,就是syList中的内容。java里面的垃圾回收机制会在合适的时候回收你不使用的内存。
      

  3.   

    楼上是正解
    treeList开始new的ArrayList,没有引用(C++中称指针),等待JVM垃圾回收。
      

  4.   

    不会的,但是treeList原来引用的对象将会被垃圾回收机制所标记上,因为这个对象已经没有任何东西引用到了
      

  5.   


    ArrayList treeList = new ArrayList();
    ArrayList syList = new ArrayList();treeList=syList;楼主,首先treeList、syList是两个引用,他们分别指向一个集合对象,当treeList=syList时,仅仅是把syList(引用)的内存地址赋给treeList,而对于两个集合对象的值没有任何影响,就这3行代码来说,会导致treeList所指向的对象成为垃圾被GC处理掉
      

  6.   

    new以后开辟了2个内存空间,treeList和syList分别指向相应的内容空间。treeList=syList后,treeList指向了syList的内存空间。两个引用指向同一内容,哪有什么覆盖不覆盖的问题。
      

  7.   

    在一般情况下
    Object a = new Object();
    Object b = new Object();b = a;  //这个时候 b原来指向的对象如果没有其他的引用标识会被JVM垃圾清理机制清理掉,而不是你所说的被覆盖,只是单纯的a指向了b原来指向的对象而已你要知道a和b不代表对象,只是一个指向对象的标示符号打个比方,你有一张到成都的火车票,这张火车票并不代表成都b = a这个操作就好像把你手中的火车票的目的地从成都改成了北京而北京和成都都就在那里,和你手中的火车票指向哪里没有关系但是如果没有一个人的火车票是到北京的,那JVM就认为这个玩意已经没有意义可以被清理了