更正一下 ,上面的说法。/* 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 (); } }
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的处理确实是按值传递进行的!
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 ();
}
}
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的处理确实是按值传递进行的!