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); }
輸出結(jié)果:AB,B
不管你傳的是什么,傳過(guò)去的都只是一個(gè)副本而已,這個(gè)副本作為方法的局部變量保存在棧中。 如果傳的是基本數(shù)據(jù)類型,修改這個(gè)值并不會(huì)影響作為參數(shù)傳進(jìn)來(lái)的那個(gè)變量,因?yàn)槟阈薷牡氖欠椒ǖ木植孔兞?是一個(gè)副本。 如果傳的是一個(gè)對(duì)象的引用,也是一樣的,也是一個(gè)副本,但是這個(gè)副本和作為參數(shù)傳進(jìn)來(lái)的那個(gè)引用指向的是內(nèi)存中的同一個(gè)對(duì)象,所以你通過(guò)這個(gè)副本也可以操作那個(gè)對(duì)象。但是如果你修改這個(gè)引用本身,比如讓他指向內(nèi)存中的另外一個(gè)對(duì)象,原來(lái)作為參數(shù)傳進(jìn)來(lái)的那個(gè)引用不會(huì)受到影響。 我覺(jué)得弄明白這些就行了,說(shuō)值傳遞或引用傳遞都無(wú)所謂,但是說(shuō)值傳遞更適合一些,這個(gè)值可以是引用也可以是基本數(shù)據(jù)類型。
注意:JAVA中只有值傳遞,沒(méi)有引用傳遞。
|