Java 值傳遞與位址傳遞(引用傳遞)區別

2021-08-23 14:20:49 字數 1261 閱讀 3464

值傳遞

pass by value

)是指在呼叫函式時將實際引數複製乙份傳遞到函式中,這樣在函式中如果對 引數 進行修改,將不會影響到實際引數。傳遞物件往往為整型浮點型字元型等基本資料結構。

public class passbyvaluereference 

private static void pass(int y)

}

下為執行結果:(整型y的值變化沒有影響整型x的值)

位址傳遞(pass by reference

)是指在呼叫函式時將實際引數的

位址直接 傳遞到函式中,那麼在函式中對 引數 所進行的修改,將影響到實際引數。(類似於共同體) 傳遞物件往往為陣列等位址資料結構。

public class passbyvaluereference ;

system.out.println(x[0]);

pass(x);

system.out.println(x[0]); }

public static void pass(int y)

}

下為執行結果:(陣列y的值變化同時影響陣列x的值) 

(值傳遞與引用傳遞在計算機資料結構中用到了棧與堆的知識)

public class passbyvaluereference 

}

這裡x與y就是基本資料型別,賦值後把x的值傳給了y,相當於是複製了乙份副本,而不是把整個x(即x位址)給了y。

public class passbyvaluereference ;

system.out.println(x[0]);

int y = x;

y[0] = 0;

system.out.println(x[0]);

}}

這裡x與y是陣列,這次的**中不是簡單地令x[0]=y[0],而是直接令x=y,此賦值語句把x的陣列位址都給了y,相當於是在「同一條船上」了,一起發生變化,y[0]變了同時x[0]也改變。

值傳遞 位址傳遞 引用傳遞

值傳遞使得實參與形參沒有聯絡,函式與函式之間沒有耦合性,在各自的函式裡修改值不會改變各自本身的值。但這也是它的缺陷。1.實參傳入被調函式無法交換數值。2.當傳入值大於8位元組即需要進行整體拷貝,無論是開闢的空間還是資料的拷貝都相對較大 這也是設計陣列退化為指標的原因 而指標傳遞只有4個位元組 所以需...

值傳遞 引用傳遞與位址傳遞對比

引用傳遞 形參與實參公用乙個記憶體單元,同時變化。值傳遞 形參是實參的轉殖體,形參在記憶體單元中發生變化不會影響到實參。形參變數只有在被呼叫時才分配記憶體單元,在呼叫結束時,即刻釋放所分配的。記憶體單元。因此,形參只在函式內部有效。函式呼叫結束返回主呼叫函式後則不能再使用該形參變數。實參可以是常量 ...

c 值傳遞 位址傳遞 引用傳遞

一.函式引數傳遞方式之一 值傳遞 1 值傳遞的乙個錯誤認識 先看題一中exchg1函式的定義 void exchg1 int x,int y 定義中的x,y變數被稱為exchg1函式的形式引數 問 你認為這個函式是在做什麼呀?答 好像是對引數x,y的值對調吧?請往下看,我想利用這個函式來完成對a,b...