java 字串引數傳遞和修改 個人見解

2021-08-31 16:07:07 字數 1086 閱讀 3030

public class example;

public static void main(string args)

public void change(string str,char ch[ ])

}

當然答案也先貼出:

good and gbc
public class test ;

public static void main(string args)

public void change(string str,char ch[ ])

}

執行結果:

1-1872034366

3-1872034366

4-1581781576

2-1872034366

good and gbc

從上面可以看到,在傳遞字串引數的時候,傳遞的是字串的指標的乙個副本,是屬於值傳遞,在修改之前位址和成員變數str的位址相同,但是修改之後就不同了,由於字串常量是在編譯時期就已經建立的記憶體空間,既然建立了就有位址,當在傳遞字串引數時,由於沒有修改,所以傳遞的副本指標指向的記憶體和成員變數指標指向的記憶體的位址相同,但是修改之後,就是將新字串的位址傳遞給了副本指標str,使得副本指標位址改變,但是沒有改變原指標的指向。

首先在上面**進行一些修改:

public class test ;

public static void main(string args)

public void change(string str,char ch[ ])

}

執行結果

1-1872034366

2-1581781576

3-1725154839

good and gbc

由上可知,引數傳遞過來指標指向的位址是1-1872034366,修改之後指向2-1581781576,再次修改之後指向3-1725154839,所以,字串改變實際上是將指標指向了另一塊記憶體,並不是將指向記憶體中的值改變。

傳遞字串 Linux Shell 傳遞引數

物聯網開發入門直播課 嵌入式 物聯網 快速上手linux 創客學院直播室 www.makeru.com.cn 嵌入式應用層開發 1小時全面認識linux網路經典案例 創客學院直播室 www.makeru.com.cn 我們可以在執行 shell 指令碼時,向指令碼傳遞引數,指令碼內獲取引數的格式為 ...

java中修改字串

當對字串進行修改的時候,需要使用 stringbuffer 和 stringbuilder 類。不同於 string 類,stringbuffer 和 stringbuilder 類的物件能夠被多次的修改,且不產生新物件。由於 stringbuilder 相較於 stringbuffer 有速度優勢...

傳遞資料結構引數和字串引數時,同時傳遞長度

再系統呼叫函式中,經常看到這樣的情況 傳遞結構體和字串引數時,同時傳遞長度。我們可以在程式中獲得傳入結構體和字串的長度,為什麼還要再傳入乙個長度?原因在於 當傳入的引數時字串時我們可以輕易的獲得長度,但是這個長度是用sizeof 還是strlen,其值是否有效?傳入的引數後,不論sizeof還是st...