list存放object随笔

今天偶然有人问起,list里存放的是对象的引用,如果这个引用这时候指向别的对象,那之前的对象的引用到哪里去了。先看到代码:
    public static void test1(){
        List array = new ArrayList();
        Map object = new HashMap();
        object.put("a", "a");
        array.add(object);
        object.put("a1", "change");
        System.out.println(array.toString());
        //1、此处输出:[{a1=change}],验证了list存放的是对象的引用。
        object = new HashMap();
        object.put("b", "b");
        array.add(object);
        System.out.println(array.toString());
        //2、此处输出:[{a=change}, {b=b}],
    } 
  

从代码2处的输出可以看出,把引用”object”指向另一个对象b,再把object保存到list中,list包含了之前的对象a和新的对象b,object=new HashMap()这段代码之后,object和对象a的引用关系解除,object指向新的对象b,但list中还是存有指向对象a的内存地址,所以对象a还存在list中。

你可能感兴趣的:(对象,list,引用)