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