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

解决方案 »

  1.   

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

  2.   

    楼上正解。 顶一下,楼主可以在eclipse 中 或者其它ide中debug一下。arr1和arr2的指向的是同一个地址的。所以不管是对1操作还是2操作,这2个list中的内容都是同一个地址的内容,所以他们的元素也是一样的。
      

  3.   

    引用类型的变量,赋值之后二者指向同一个内存地址,两个list实际上就是一个
      

  4.   

    arr1和arr2都指向 创建new ArrayList()分配的内存空间地址。都是2
      

  5.   

    明白了new的操作 就知道这里都是2了~ObjectA a=new ObjectA();
    ObjectA b=a;    第一句是产生一个ObjectA的对象,然后将对象的地址给a, 也就是说a是一个指向对象的地址。
    第二句 将同样的地址又赋给了b, a 、b指向的是同一个对象。所以压根a和b就是同一个对象,操作当然是一样的