bak和list都是同一个对象的两个引用,都指向的是同一个内存地址,清掉了list里的内容,bak里也就成空了.

解决方案 »

  1.   

    List list = new ArrayList();
    List bak = new ArrayList();
    这是两个不同的对象
      

  2.   

    对,上面的确是两个不同的对象,
    但是下面:
    bak=list;
    bak和list就都是同一个对象的两个引用了.
      

  3.   

    我只想把list的数据传给bak
    然后删掉list也就是说
    bak = list;
    为什么不是list中的数据传给bak如果这么说
    list如果是个全局变量
    bak是个局部变量
    list = bak后
    局部变量被垃圾回收
    难道list中的数据会为空
    我觉得不太可能
    别告诉我bak指向的对象还在明天试一试
      

  4.   


    数组不是这样的
    谁能讲解一下:LIST和数组的区别?
      

  5.   

    传的话,就循环传值吧,list和数组不一样吧
      

  6.   

    bak=list;
    bak和list就都是同一个对象的两个引用了
    bak=new ArrayList(list);
    bak就是新建的这个对象的引用。
    java没指针的
      

  7.   

    如果: list如果是个全局变量,bak是个局部变量,bak = list后,bak里存放的是和list相同的reference,当局部变量bak被垃圾回收时仅仅是bak的reference被回收,而此reference所指向的对象依然存在(这是两个不同的概念),因为仍然有list的reference指向此对象,因此不可能被回收.
    当用bak = new ArrayList(list)时,是把list指向的对象做了一份拷贝给了bak,此时bak和list的reference不同.