1 回答

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
java 默認(rèn) 對(duì)象傳遞方式是 引用傳遞,
代碼中 “ char [] tempchs = chs ; //將abcd存入tempchs ” 其實(shí)是將chs 和 tempchs 指向了同一個(gè)存放實(shí)際對(duì)象的內(nèi)存區(qū)域。
所以實(shí)際內(nèi)容改變了,通過(guò)引用 訪問(wèn)的結(jié)果也會(huì)跟著變。
關(guān)于這塊內(nèi)容 還有深拷貝和淺拷貝,但實(shí)際都是值傳遞和引用傳遞之間的區(qū)別,搞清楚這個(gè)點(diǎn) 有助于理解java如何操作變量,使用內(nèi)存。
如果要達(dá)到你想要的效果,可以使用 java.util.Array 類
將 “ char [] tempchs = chs ; //將abcd存入tempchs ”
改為 “char [] tempchs = Arrays.copyOf(chs, chs.length) ; //將abcd存入tempchs” 即可
還可以參考 Arrays.copyOf 的源碼實(shí)現(xiàn),是如何處理深拷貝的。
添加回答
舉報(bào)