直接负值就是传递应用所以上面的4步执行下来肯定a,b都指向一个对象。下面的那种,a=a+"a",字符串不能被增加或减少字符,所谓的a+"a",实际上是新生成了个对象,不是加在了a本身上。不信用stringbuffer试试看。

解决方案 »

  1.   

    java的对象是引用类型的,声明一个变量其实是开辟一个地址,将对象赋值就是将对象引用地址改变。
    String a = new String();  开辟一个新址
    String b = new String();  开辟一个新址
    b=a; 将b的引用地址指向a      
    a= a+"a";  为a开辟一个新的址
    java中string类型 出现一个新的就开辟一个新地址b和a的引用地址不一样所以值就不一样。
      

  2.   

    了解了,那我如何才能让ArrayList b的内容不随a变化呢?