java中的值傳遞與引用傳遞

2021-06-21 22:38:03 字數 733 閱讀 3625

1.說明

原始型別(int,long等)和包裝類(integer,long等)進行引數傳遞時是值傳遞,所有函式體內針對引數的操作,都是對於拷貝的操作,不會改變本體。

類和容器(list,set等)作為引數時傳的是引用的乙個副本(注意:不是引用本身。區別於c++)。

2.例項

1)以下為原始型別和包裝類作為引數時的例子。執行單元測試的結果分別為3和4。本體沒有被改變。

2)以下是list和array作為引數時的例子。函式體內做的變化都改變了list和array本身。結果是1和6.

3) stringbuffer類作為引數時的改變情況。 

結果為:

ab,ab

ab,b

分析:類作為引數時,傳的是引用的副本。

x=a, y=b 傳入。

y=x    //將引用y指向引用x指向的內容,即指向a。注意,b的內容沒有被改變

輸出x,y的內容,即輸出a指向的內容。

Java 資料傳遞(值傳遞與引用傳遞)

所以當我們操作乙個基本型別的變數時,是直接在棧中操作的變數的值。而我們對乙個引用型別的變數進行操作的時候,是我們先通過引用到棧中拿到這個物件在堆中的位址,再對堆中的資料進行操作。public class test public static void plug int num 上面 中對 基本型別變...

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

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

java中的值傳遞和引用傳遞

值得傳遞 實際引數得值傳遞給形式引數,但是形式引數改變不了實際引數的值。如下 1 public class alias public static void main stringargs 2 public class passvalue public static void main string...