1. 程式人生 > >Java中的值傳遞問題

Java中的值傳遞問題

Java中的值傳遞問題

參考網址地址

https://blog.csdn.net/bjweimengshu/article/details/79799485

值傳遞 & 引用傳遞的定義

值傳遞(pass by value)

是指在呼叫函式時將實際引數==複製==一份傳遞到函式中,這樣在函式中如果對引數進行修改,將不會影響到實際引數。

引用傳遞(pass by reference)

是指在呼叫函式時將實際引數的地址==直接==傳遞到函式中,那麼在函式中對引數所進行的修改,將影響到實際引數。

自己的總結

總結一句,Java中傳遞的是引用,但不是引用傳遞,是值傳遞(拷貝後)傳遞的引用,所以之後方法中雖然是指向了堆中物件的地址,但是由於是值傳遞導致在改方法中改變該物件的引用不能影響主方法中的引用地址。

Java中巧妙的使用值傳遞傳遞引用達到了偽引用傳遞的效果,==這樣做與引用傳遞的區別就是如果在子方法中改變形參的引用地址,父方法不會改變==。

public static void main(String[] args) {
   ParamTest pt = new ParamTest();

   String name = "Hollis";
   pt.pass(name);
   System.out.println("print in main , name is " + name);
}

public void pass(String name) {
   name = "hollischuang";
   System.out.println("print in pass , name is " + name);
}

上面的程式碼輸出結果為

print in pass , name is hollischuang
print in main , name is Hollis