ArrayList a = new ArrayList();
        String b = "我";
        a.add(b);
        System.out.println(a.get(0));
        b = "你";
        System.out.println(a.get(0));类似的这种问题看过N次了  总是分不清楚
总记得java是引用地址空间啊
难不成这个add会开新空间 把b复制进去?

解决方案 »

  1.   

    本帖最后由 AWUSOFT 于 2009-05-09 22:21:25 编辑
      

  2.   

    可以这么理解:a和b都是指针
    a.add(b) :在a中增加一个指向b所指元素的指针,现在有2个指针都指向原来b指向的值
    b = "你":指针b改变了指向,但并不影响a中第一个元素指针的指向
      

  3.   

    String b = "我";
    这句话的意思是将一个字符串("我")的引用赋给变量 b。a.add(b);
    这句话的意思是将 b 变量的引用赋值给 a 的第一个元素。此后再来改变 b 的引用,a 也不会受任何影响。