考慮下面程式:
public class immutable
public static void array(int a)
public static void main(string args) ;
system.out.println(a[3]);
array(a);
system.out.println(a[3]);}}
output:
howdy
howdy
howdy45
都是傳遞的引用,我們發現輸出的兩次q的值是完全一樣的,而陣列的值卻發生了變化,一開始很不能理解,為什麼都是傳遞的引用輸出的q前後不變而陣列的a[3]卻發生了變化,原來當把q傳給upcase()方法時,實際傳遞的是引用的乙個拷貝。而該引用所指的物件其實一直待在單一的物理位置上,從未動過。而陣列就不一樣了,當將陣列名字作為引數傳遞時候,傳遞的是引用本身,若對其中乙個或一些值修改,則原來陣列就會發生變化。如果還是不太能夠理解string了話,接著往下看,string物件具有唯讀性,所以指向它的任何引用都不能修改它的值,如果將q="howdy"改為q="howdy",那麼表示q又指向了乙個新的物件,而原來的"howdy"並位發生任何變化。
JavaScript 按值傳遞 按引用傳遞
1 值的比較 引用的比較 首先,原始值的比較是值的比較 只有在它們值相等的時候它們才相等 比如簡單的 var a1 10 var a2 10 console.log a1 a2 true 其次,物件的比較並非值的比較 物件的比較均是引用的比較,當且僅當它們引用同乙個基物件時,它們才相等。即使兩個物件...
按值傳遞和按引用傳遞
對於基本型別而言,是按值傳遞的 基本型別儲存在棧中 基本型別引數的傳遞和基本型別的複製一樣,傳遞的是值本身 var a 1 function test x test a console.log a 1按值傳遞的意思就是形參是實參的複製,形參實參互不干擾 so,雖然在函式test中a被修改,但是並沒有...
Java按值傳遞和按引用傳遞
如果傳遞引數是基本型別或其包裝類,則按值傳遞,改變引數的值,實際引數的值不變。public static void main string args public static void changei integer i 如果傳遞引數是類或陣列,則按引用傳遞,改變物件的引用,實參的引用不會改變,但...