實際上java中不存在引用傳遞,Java裏面傳的任何參數都是傳的「值的副本」,若是是對象,那麼傳遞的是指針的「值的副本」,因此會有如下幾種狀況
- 8種基本類型,傳的是值的副本,在另外的方法裏面修改值,當前函數的值都不會改變
- 沒有提供方法對自身進行修改的對象,好比String、Integer...對變量進行賦值操做其實是把傳進來的引用的副本改變成了一個新的對象的引用,不會影響到原來的引用裏面的對象
- 提供方法對自身進行修改的對象,如StringBuffer...對象自身對自身進行改變,引用沒有被改變,因此原方法裏面的引用也會跟着改變
- 只有數組名,至關於把數組的頭指針的「值的副本」傳遞進來,而arr[i]能夠理解爲是根據地址計算實際的數據位置偏移來操做數組當中的某個元素,因此原方法當中也會跟着改變,若是是直接給arr賦一個新值就是另一回事兒了
參考大神的demo:https://leetcode-cn.com/playg...java