class Test {
static StringBuffer sb1 = new StringBuffer("A");
static StringBuffer sb2 = new StringBuffer("B");
public static void main(String args[]) {
Test h = new Test();
h.methodA(sb1, sb2);
System.out.println(sb1 + "," + sb2);
}
public void methodA(StringBuffer x, StringBuffer y) {
y.append(x);
x = y;
}
}
輸出為A,BA
x=y;隻是讓句柄x指向了y所指向的對象,并不是将x所指向的對象指派為"BA",也就是說這句隻是讓x句柄轉了指向
A method cannot modify a parameter of primitive type (that is, numbers or Boolean values).
A method can change the state of an object parameter.
A method cannot make an object parameter refer to a new object.
在JAVA當中沒有所謂的位址傳遞,隻有值傳遞一種方式。我們來看看代碼
static StringBuffer sb1=new StringBuffer("A");
static StringBuffer sb2=new StringBuffer("B");
sb1-->"A"; sb2-->"B";
在methodA方法調用中
h.methodA(sb1,sb2);
sb1-->x, sb2-->y
那麼x-->"A"; y-->"B";
public void methodA(StringBuffer x,StringBuffer y) {
y.append(x);//相當于sb2.append(sb1),sb2所引用的StringBuffer對象已經改變。
//即sb2=y-->"BA"
x=y;//x-->"BA";但是由于在JAVA當中隻有值傳遞一種方式,sb1根本沒有改變,是以sb1-->"A";
}
最後System.out.println(sb1+","+sb2);
得到了結果:A,BA