關於JAVA中String類以形參傳遞到函數里面,修改后外面引用不能獲取到更改后的值(轉)


String類的存儲是通過final修飾的char[]數組來存放結果的。不可更改。所以每次當外部一個String類型的引用傳遞到方法內部時候,只是把外部String類型變量的引用傳遞給了方法參數變量。對的。外部String變量和方法參數變量都是實際char[]數組的引用而已。所以當我們在方法內部改變這個參數的引用時候,因為char[]數組不可改變,所以每次新建變量都是新建一個新的String實例。很顯然外部String類型變量沒有指向新的String實例。所以也就不會獲取到新的更改。 
下面程序例子假定tString指向A內存空間,A內存空間存放了”hello”這個字符串,然后調用modst函數將tString引用賦值給了text引用,注意是引用。確實是傳址,我們知道String是不可變的,任何進行更改的操作都會產生新的String實例。所以在方法里面text指向了B空間,B空間存放了”sdf” 字符串,但是這個時候tString還是指向A空間,並沒有指向B空間。

兩次輸出結果都是

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM