天天看點

System.arraycopy和Arrays.copyOf的原了解剖

arraycopy

arraycopy

是System提供的

native

靜态方法,方法原型如下;

public static native void arraycopy(Object arg, int arg0, Object arg1, int arg2, int arg3);      

參數arg:源數組對象

arg0:源數組的起始位置

arg1:目标數組對象

arg2:目标數組的起始位置

arg3:要複制的元素數量

copyOf

Arrays

類中存在着

copyOf

的很多種實作方式,在進行數組的複制過程中,我們隻需要調用其中一種即可,調用方式如下;

Arrays.copyOf(elementData, size);      

參數elementData:源數組對象

size:目标數組的長度

來看一下copyOf的源碼,如下;

System.arraycopy和Arrays.copyOf的原了解剖

首先,建立了一個和源數組元素相同類型的新數組;

接着調用了System.arraycopy函數,并且在arraycopy函數最後一個參數(要複制的元素數量)取了設定的size值和源數組長度兩者的最小值;

最後傳回了新數組。

繼續閱讀