StringBuffer 传地址,string好像是传值。

解决方案 »

  1.   

    更正一下 ,上面的说法。/*
    public class T104_34 {
    public static void operate(StringBuffer x, StringBuffer y) {
    x.append(y);//关键是这个append方法,它对x所在在地址进行操作。
    y = x;//y是局部变量,所以在这里随便怎么赋值都没有什么用。
    System.out.println(y); // print AB
    }
    public static void main(String[] args)throws Exception {
    StringBuffer a = new StringBuffer("A");
    StringBuffer b = new StringBuffer("B");
    operate(a,b);
    System.out.println(a + " , " + b); // print AB , B
    System.in.read ();
    }
    }
    */public class T104_34 {
    public static void operate(String x, String y) {
    x.concat(y);//很明显,concat是返回一个追加后的字符,但是对y本身不进行改变。
    //如果好生改变那么下面这句应该输出"ABB"
    System.out.println(x.concat(y));// print AB
    System.out.println(x); // print A //局部变量
    }
    public static void main(String[] args)throws Exception {
    String a = new String("A");
    String b = new String("B");
    operate(a, b);
    System.out.println(a + " , " + b); // print A , B
    System.in.read ();
    }
    }
      

  2.   

    public class T104_34 {
    public static void operate(StringBuffer x, StringBuffer y) {
    x.append(y);
    y.append(x);
    System.out.println(x); // print AB
    System.out.println(y); // print BAB
    }
    public static void main(String[] args) {
    StringBuffer a = new StringBuffer("A");
    StringBuffer b = new StringBuffer("B");
    operate(a,b);
    System.out.println(a + " , " + b); // print AB , BAB
    }
    }
    // 我怀疑,java对String的处理确实是按值传递进行的!