“=”,相當於將一個陣列變數的引用傳遞給另一個數組;如果一個數組發生改變,那麼引用同一數組的變數也要發生改變. 使用FOR迴圈,將數組的每個元素複製或者複製指定元素,不過效率差一點 使用clone方法,得到數組的值,而不是引用,不能複製指定元素,靈活性差一點 使用System.arraycopy(src, srcPos, dest, destPos, length)方法,推薦使用,效率最高
public static native void arraycopy(Object src, int srcPos, Object dest, int destPos,int length);
src:源數組; srcPos:源數組要複製的起始位置;
dest:目的數組; destPos:目的數組放置的起始位置;
length:複製的長度.
因為根據System.arraycopy()源碼,可以看到是native方法:native關鍵字說明其修飾的方法是一個原生態方法,方法對應的實現不是在當前檔案,而是在用其他語言(如C和C++)實現的檔案中。 可以將native方法比作Java程式同C程式的介面。
5 . copyOf(),,不是System的方法,而是Arrays的方法,下面是源碼,可以看到本質上是調用的arraycopy方法。,那麼其效率必然是比不上 arraycopy的.
public static int[] copyOf(int[] original, int newLength) { int[] copy = new int[newLength]; System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); return copy;}
使用方法:
1.使用clone
int[] src={1,3,5,6,7,8};
int[] dest;
dest=(int[]) src.clone();//使用clone棄置站台,注意clone要使用強制轉換
2、使用System.arraycopy
int[] src={1,3,5,6,7,8};
int[] dest = new int[6];
System.arraycopy(src, 0, dest, 0, 6);