java只有值傳遞的含義

2021-09-03 08:05:33 字數 973 閱讀 8041

1,值傳遞

這個比較簡單,函式中,實參a將值拷貝給形參a,形參a此時也在記憶體中擁有位址,位址= ***x,值為3,在所有的函式體內的操作,都是對 ***x這個位址的操作,所以並不會影響實際引數的值。

2,位址傳遞

在這裡我們習慣把指標寫成int* a,int* b而不是int *a,int *b。我們可以這樣理解:指標是一種特殊的資料型別,若 int c = 5;int* a = &c;則a是乙個指標變數,它的值是c的位址!星號「*」是乙個取值操作,和號「&」是乙個取址操作。所以此時單純看a和b都是乙個整數,它們表示位址,進行取值操作之後就可以得到相應位址的值。函式接受兩個型別為指標的變數,實際接受的是a和b,即兩個位址。

3,引用傳遞

引用是變數的乙個別名,呼叫這個別名和呼叫這個變數是完全一樣的。所以swap2的結果可以解釋。值得注意的是,由於引用時別名,所以引用並不是一種資料型別,記憶體並不會給它單獨分配記憶體,而是直接呼叫它所引用的變數。這個與位址傳遞也就是指標是不一樣的(也就是說乙個指標雖然指向乙個變數,但是這個指標變數在記憶體中是有位址分配的),下面**進行驗證。

1,基本資料型別對於基本資料型別來說,它使用值傳遞,沒什麼好說。

2引用資料型別

對於引用資料型別,然而我們經常看到對於物件(陣列,類,介面)的傳遞似乎有點像引用傳遞,可以改變物件中某個屬性的值。但是不要被這個假象所蒙蔽,實際上這個傳入函式的值是物件引用的拷貝,即傳遞的是引用的位址值,所以還是按值傳遞(對比c++中,引用資料型別是沒有分配位址的)。

Java的值傳遞和引用傳遞

值傳遞 值傳遞是基本資料型別的資料傳遞,是棧中的資料 基本資料型別的資料作為方法的引數進行傳遞,那麼在方法中會另外開闢乙個新的記憶體空間,跟原來的記憶體空間不是乙個記憶體空間,如果在方法中對引數的值進行更改,不糊影響原來的記憶體空間的值 如果非要獲取方法中修改後的值,則需要把修改後的值返回出來 引用...

Java的值傳遞和引用值傳遞的區別

值傳遞針對的物件主要包括 基本資料型別以及其對應的封裝類,還有引用型別中特殊的string型別 值傳遞的時候,將實參的副本傳遞給形參,所以無論呼叫的這個方法裡面如何對形參進行改變,都不會影響實參的值,因為副本作為區域性變數,在其行為結束時候,就會被 失效 故我們從main 方法中得到該變數還是原來的...

java 值傳遞和引用傳遞

值傳遞 方法呼叫時,實際引數把它的值傳遞給對應的形式引數,方法執行中形式引數值的改變不影響實際參 數的值。引用傳遞 也稱為傳位址。方法呼叫時,實際引數的引用 位址,而不是引數的值 被傳遞給方法中相對應的形式引數,在方法執行中,對形式引數的操作實際上就是對實際引數的操作,方法執行中形式引數值的改變將會...