String 按引用傳遞和陣列按引用傳遞淺見

2021-06-30 16:08:53 字數 599 閱讀 5291

考慮下面程式:

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 如果傳遞引數是類或陣列,則按引用傳遞,改變物件的引用,實參的引用不會改變,但...