1. 程式人生 > >JAVA中複製陣列的五種方法

JAVA中複製陣列的五種方法

  1. “=”,相當於將一個數組變數的引用傳遞給另一個數組;如果一個數組發生改變,那麼引用同一陣列的變數也要發生改變.
  2. 使用FOR迴圈,將陣列的每個元素複製或者複製指定元素,不過效率差一點
  3. 使用clone方法,得到陣列的值,而不是引用,不能複製指定元素,靈活性差一點
  4. 使用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);