日期:2014-05-20  浏览次数:20687 次

面试题:关于list集合的问题
List arr1 = new ArrayList();
arr1.add(2);
list arr2 = arr1;
arr2.add(3);
问:此时arr1和arr2里各添加了多少元素,为什么?


------解决方案--------------------
应该都是2 吧 ,他们都是指向一个地方 ,就是List arr1 = new ArrayList();创建分配的内存空间首地址,所以 无论是对谁进行add操作 ,都是对这一块内存地址进行操作的

个人认为
------解决方案--------------------
楼上正解。 顶一下,楼主可以在eclipse 中 或者其它ide中debug一下。arr1和arr2的指向的是同一个地址的。所以不管是对1操作还是2操作,这2个list中的内容都是同一个地址的内容,所以他们的元素也是一样的。
------解决方案--------------------
明白了new的操作 就知道这里都是2了~

ObjectA a=new ObjectA();
ObjectA b=a;

第一句是产生一个ObjectA的对象,然后将对象的地址给a, 也就是说a是一个指向对象的地址。
第二句 将同样的地址又赋给了b, a 、b指向的是同一个对象。

所以压根a和b就是同一个对象,操作当然是一样的