public static void add(StringBuffer x,StringBuffer y){
x.append(y);
y=x; //y開(kāi)始是指向b的,賦值以后就指向了x
}
/**
* @param args
*/
public static void main(String[] args) {
StringBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
add(a,b);
System.out.println(a+","+b);
}
輸出結果:AB,B
不管你傳的是什么,傳過(guò)去的都只是一個(gè)副本而已,這個(gè)副本作為方法的局部變量保存在棧中。
如果傳的是基本數據類(lèi)型,修改這個(gè)值并不會(huì )影響作為參數傳進(jìn)來(lái)的那個(gè)變量,因為你修改的是方法的局部變量,是一個(gè)副本。
如果傳的是一個(gè)對象的引用,也是一樣的,也是一個(gè)副本,但是這個(gè)副本和作為參數傳進(jìn)來(lái)的那個(gè)引用指向的是內存中的同一個(gè)對象,所以你通過(guò)這個(gè)副本也可以操作那個(gè)對象。但是如果你修改這個(gè)引用本身,比如讓他指向內存中的另外一個(gè)對象,原來(lái)作為參數傳進(jìn)來(lái)的那個(gè)引用不會(huì )受到影響。
我覺(jué)得弄明白這些就行了,說(shuō)值傳遞或引用傳遞都無(wú)所謂,但是說(shuō)值傳遞更適合一些,這個(gè)值可以是引用也可以是基本數據類(lèi)型。
注意:JAVA中只有值傳遞,沒(méi)有引用傳遞。
聯(lián)系客服