java 形參改變與實參的關係

2021-09-23 07:47:46 字數 1145 閱讀 3544

主函式

change函式

執行結果

結論

變數傳遞到函式中時是形參,是不是陣列都有引數。對於非陣列變數,引用型別形參和實參的位址不一樣但是他們指向的位址是一樣的,但是形參改變時會指向另乙個地方而實參指向的地方值不會變比如下圖

假如有s=」hel」;現在有函式改變他為s=」pic」

實際變化如下圖

基本資料變數,位址又不一樣,形參改變完全不影響實參

但是對於陣列變數,形參和實參實際位址依然不一樣但是指向的位址相同,且修改時修改的是對應位址的值。所以實參對應的值會改變(例如string,形參改變時建立乙個新的常量並指向它,所以實參才不會改變)

q:我建立乙個類時也有變數,也有改變變數的函式。會不會出現這種情況。

a:會的,如果你把你想改變的變數作為形參輸入就會有這種問題。但是誰這麼寫啊?類中賦值一般都是下面那樣(需要改變的量不作為引數傳入),如果被迫需要作為形參輸入的話一般有反回值返回。注意下面這種賦值和上面那種賦值的區別,上面需要改變的變數作為形參相當於新開闢了乙個string物件,改變新的物件不影響實參。下面這種是直接改變實參。

public void change(string str)		

public void change()

tips:

基本型別:直接儲存在stack中

引用型別:例如string,實際內容在heap中,但是stack中的值指向了heap的位址。順便說一下常量池是方法區的一部分。

java 形參 實參

實參 直接值傳遞 string 八大基礎資料型別 形參是定義方法的時候,該方法所攜帶的引數,不如說現在有乙個方法 public void printinfo string info 此處info就是乙個形參,它是string型別的。實參是你在呼叫方法的時候,給這個方法傳遞的引數值,比如說有這麼乙個語...

java形參實參

摘自 一 基本資料型別 傳值,方法不會改變實參的值。如int,string 二 物件型別引數 傳引用,方法體內改變形參引用,不會改變實參的引用 但有可能改變實參物件的屬性值 string陣列 1 方法體內改變形參引用,但不會改變實參引用 實參值不變。2 方法體內,通過引用改變了實際引數物件的內容,注...

Java變數,形參,實參

成員變數定義在類中,在整個類中都可以被訪問。成員變數分為類成員變數和例項成員變數,例項變數存在於物件所在的堆記憶體中,類成員變數也叫靜態變數,存在於靜態域內。成員變數有預設初始化值。成員變數的許可權修飾符可以根據需要,選擇任意乙個。區域性變數只定義在區域性範圍內,如 方法的形參,方法內的變數,塊內的...