1. 程式人生 > 其它 >如何形象簡單地理解java中只有值傳遞,而沒有引用傳遞?

如何形象簡單地理解java中只有值傳遞,而沒有引用傳遞?

首先,java中只有值傳遞,沒有引用傳遞。可以說是“傳遞的引用(地址)”,而不能說是“按引用傳遞”。

按值傳遞意味著當將一個引數傳遞給一個函式時,函式接收的是原始值的一個副本,只是實參和形參內容相同,但形參和實參是兩個東西。因此,如果函式修改了該引數,僅改變副本,而原始值保持不變。另一種情況是“傳遞的引用”,將一個引數傳遞給一個函式時,形參複製了一份實參的地址(即指向同一物件),實參和形參仍然是兩個東西。

在 Java 應用程式中永遠不會傳遞物件,而只傳遞物件的引用(即傳遞地址,地址也是值)。

傳遞物件的引用,形象地說是當將一個引數傳遞給一個函式時,函式接收的是原始值的一個副本,形參指向實參所指向的物件A(複製了一份地址,但形參和實參是兩個東西),形參改變了所指向物件A的內容時,因為實參和形參指向的同一個物件,即實參所指向的物件A的內容發生了改變。

C語言也沒有引用傳遞,C++中才有引用傳遞,形參本身發生改變導致實參發生改變才叫引用傳遞,但java中形參本身發生改變只是形參指向指向了另一物件B(即形參儲存的地址改變),不會影響到實參(實參還是指向原來的物件A),所以說java沒有引用傳遞,只有值傳遞。