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

2021-08-08 04:01:03 字數 1025 閱讀 9068

所以當我們操作乙個基本型別的變數時,是直接在棧中操作的變數的值。而我們對乙個引用型別的變數進行操作的時候,

是我們先通過引用到棧中拿到這個物件在堆中的位址,再對堆中的資料進行操作。

public

class test

public

static

void

plug(int num)

}

上面**中對 基本型別變數a 進行了操作,但是輸出的結果還是100!

首先變數a 是乙個基本變數,進行的操作都是對它的值得操作,在方法plug中的形參只是對變數a 的值得複製,對變數a 沒有影響。

public

class test1

public

static

void

change(string arg)

}

上面**對 引用型別變數str 進行了操作,輸出結果是0。

為什麼呢?

首先對引用型別變數str 進行的操作都是對它持有位址對應的堆記憶體資料進行的操作。change方法的形參只是對它引用的乙個宣告,

也就是說變數str和形參arg同時指向了同乙個堆記憶體,也就是「1001」對應的資料記憶體,而change方法,對這個記憶體的值進行了修改。

所以在輸出的時候變數str拿到的資料就是經過change方法之後的資料「0」。

public

class test2

public

static

void

change(string arg)

}

大家在看上面的**,change方法中做了改變,這樣的輸出結果就變成了「1001」。

是這樣的,new操作會在堆記憶體中開闢記憶體空間,這時,變數str和形參arg指向的就不是同乙個堆記憶體空間了,這樣不管變數arg

做怎樣的操作都不會影響到變數str,因為變數arg操作的堆記憶體空間和str沒關係,所以輸出的結果就是「1001」。

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

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

引用傳遞與值傳遞

看 define n 10000 define n 10000 ini set memory limit 1g function microtime float function printarray0 arr 引用傳遞 function printarray1 arr 值傳遞 for i 0 i ...

值傳遞與引用傳遞

分析 形參是實參的拷貝,改變形參的值並不會影響外部實參的值。由於x 1 是在test方法棧裡面執行的,所以只會改變test方法棧裡面的x值,而不會改變main方法棧裡面的x值 形參的改變不會影響實參 引用傳遞,傳遞的是實際引數的位址.傳遞的是值的引用,也就是說傳遞前和傳遞後都指向同乙個引用 同乙個記...