java中只有傳值
package sinosoft;
import org.junit.Test;
public class PassValueTest {
/**
* 運(yùn)行結(jié)果是
* Hello World!
hi World!
Hello World!
要理解這點(diǎn),就要理解在Java中只有傳值
對(duì)于參數(shù)傳遞,如果是簡(jiǎn)單數(shù)據(jù)類型,那么它傳遞的是值拷貝,
對(duì)于類的實(shí)例它傳遞的是類的引用的拷貝
對(duì)類來(lái)說(shuō):引用與引用的拷貝都指向?qū)ο蟮耐粋€(gè)內(nèi)存塊,因此對(duì)引用操作,引響的是同一個(gè)對(duì)象
但像chang方法中,對(duì)引用的拷貝重新賦給一個(gè)對(duì)象,那就與原先對(duì)象無(wú)關(guān)了。自然不會(huì)影響到原先對(duì)象
*/
@Test
public void test(){
StringBuffer bf = new StringBuffer("Hello World!");
System.out.println(bf.toString());
change(bf);
System.out.println(bf.toString());
}
public void change(StringBuffer bf){
bf = new StringBuffer("hi");
bf.append(" World!");
System.out.println(bf.toString());
}
}