public class Foo {
    
    /** Creates a new instance of Foo */
    public Foo() {
    }
    public static void main(String args[]){
        1 //StringBuffer a=new StringBuffer("AA");
        //StringBuffer b=new StringBuffer("BB");
        2 //String a=new String("AA");
        //String b=new String("BB");
        3 String a="AA";
        String b="BB";
        operate(a,b);
        System.out.println(a+"__"+b);
    }
    static void operate(String x,String y){
        1.//x.append(y);
        2和3 x+=y;
             y=x;
    }
}
如果是1输出是AABB_BB
2,3输出是AA_BB
这个1是为什么?
对象的引用因该是不变的呀。
如果是因为对象变了的话,那2,3之中的对象也变了呀。还是因为是String类是不可改变的原因?
还是因为内存的原因?

解决方案 »

  1.   

    A StringBuffer instance is mutable, while a String instance is immutable.
      

  2.   

    你确认你没写错吧?
    static void operate(String x,String y){ 
            1.//x.append(y); 
            2和3 x+=y; 
                 y=x; 
        } 
    中不可能调用x.append(y); 
      

  3.   

    没看懂你问什么. StringBuffer实例易变;String实例不可变.