String做參數引用傳遞能夠修改原值嗎

原由:項目中一處方法的參數String須要在調用處使用,還須要在方法內使用,而且方法此時須要返回的值有多個且包括這個參數String(如今是使用封裝一個類,包含全部返回值的類)

在java中,依然是存在引用傳遞和值傳遞的:java

  • 引用傳遞:參數進入方法後,方法在參數上作的修改,可使得變量原型同樣隨之變化,由於是參數拷貝了變量的地址引用,方法經過地址引用來修改
  • 值傳遞:參數進入方法後,方法在參數上作的修改,不會使得原型改變,由於這裏的參數是原型的一個拷貝,這裏改變的是一個備份,而非數據自己

在java中,基本數據類型是值傳遞,而非基本類型是引用傳遞,可是,String由於是「不可變」的對象,致使了它的特殊性。

String對象在發生改變的時候,是產生一個新的對象,而後將指針指向新的對象。

  • 進入方法後,參數(B)與原型(A)的狀況

  • 方法內對參數進行修改,修改成「b」

原型和參數此時指向的是不一樣的對象,因此String不能經過參數引用傳遞來做值的改變

如如有錯,煩請指出

相關文章
相關標籤/搜索