論java中System.arrayCopy()與Arrays.copyOf()的區別


如果我們想拷貝一個數組,我們可能會使用System.arraycopy()或者Arrays.copyof()兩種方式。在這里,我們將使用一個比較簡單的示例來闡述兩者之間的區別。

首先先說System.arraycopy()

接下來是代碼

       int[] arr = {1,2,3,4,5};  

       int[] copied=new int[10];

System.arraycopy(arr,0,copied,1,5);//這里的arr是原數組,0是原數組拷貝的其實地址。而copied是目標數組,1是目標數組開始存放的位置,5則是數組存放的長度。


System.out.println(Array.toString(copied));

運行結果如下:

[0,1,2,3,4,5,0,0,0,0];

再來說arrays.copyof()

int copied=arrays.copyof(arr,10);

System.out.println(Arrays.toString(copied));

copied=arrays.copyof(arr,3);

System.out.println(Arrays.toString(copied));

運行結果如下:

[1,2,3,4,5,0,0,0,0,0]

[1,2,3]

這里我們來談談他們的區別,這也是之前我一直沒弄懂的地方:

兩者的區別在於,Arrays.copyOf()不僅僅只是拷貝數組中的元素,在拷貝元素時,會創建一個新的數組對象。而System.arrayCopy只拷貝已經存在數組元素。

如果我們看過Arrays.copyOf()的源碼就會知道,該方法的底層還是調用了System.arrayCopyOf()方法。

而且System.arrayCopy如果改變目標數組的值原數組的值也會隨之改變。


免責聲明!

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



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