我們知道在方法中用到的數組是存在內存中的,對數組的操作都是對對應內存地址上的數據進行操作。如下例子
我們看到對於入參的數組實際的操作是針對該內存地址上的數組進行操作,內存中修改了,後續的打印自然也是修改之後的結果。
實際中我們經常會用到深度複製,即複製的數組相關的修改、增加、刪除操作不影響原始數組。
爲了實現深度複製數組我們可以藉助Arrays.copyof()方法。如下:
從運行結果我們可以看到,通過copyof方法複製的數組 進行修改操作不影響原始數組。
我們從Arrays.copyof()的源碼中可以看到,這裏其實是重新定義了一個指定長度的數組,通過arraycopy複製數組來實現的,實際上就是兩個完全獨立的數組,所以纔有深度複製的效果。