一个参数传递的问题,谢谢高手了!

来源:百度知道 编辑:UC知道 时间:2024/06/21 06:20:34
public class a {
public static void main (String [] args) {
StringBuffer a = new StringBuffer ("A");
StringBuffer b = new StringBuffer ("B");
f (a,b);
System.out.println(a + "," +b);}
static void f (StringBuffer x, StringBuffer y) {
x.append (y);
y=x;
System.out.println(y);}}

public class a {
public static void main (String [] args) {
StringBuffer a = new StringBuffer ("A");
StringBuffer b = new StringBuffer ("B");
a.append(b);
b=a;
System.out.println(a + "," +b);}}

public class a {
public static void main (String [] args) {
String a = new String ("A");
String b = new String ("B");
f(a,b);
System.out.println(a + "," +b);}
public static void f(String x,String y){
x=new String("123");
y=x;
System.out.println(x+";"+y);}}
以上是3个程序。其中第一个

f(x,y)中的x,y都是stringBuffer类型的引用.首先x.append(y)改变了x在栈中指向的内容,故a指向的内容为"AB". y=x把x的引用复制给y,但y原来指向的区域内容并没有改变,函数弹出后对b的内容没有影响。
Example:
f(Object o1,Object o2){
Object o=o1;
o1=o2;
o2=o;
}
只是交换引用的值,内容并不改变。