1. int elements[ ] = { 1, 2, 3, 4, 5, 6 };
// 增大後的新數組
int hold[ ] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };
// 把elements數組中的所有元素複製到
// hold數組中,下標從0開始
System.arraycopy(elements, 0, hold, 0, elements.length);
for(int i=0;i<elements.length;i++)
System.out.println("elements["+i+"]="+elements[i]);
for(int i=0;i<hold.length;i++)
System.out.println("hold["+i+"]="+hold[i]);
昨夜風說明:
arraycopy是數組間複製方法。參數包括兩部分:
頭一個參數為被拷貝的數組,第二個參數為起始位置,0表示從第一個元素;第三個參數為目的數組,第四、第五個分別的放到目的數組的起始位置和長度。
2.
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
從指定源數組中複製一個數組,複製從指定的位置開始,到目標數組的指定位置結束。從 src 引用的源數組到 dest 引用的目標數組,數組組件的一個子序列被複製下來。被複製的組件的編號等於 length 參數。源數組中位置在 srcPos 到 srcPos+length-1 之間的組件被分別複製到目標數組中的 destPos 到 destPos+length-1 位置。
如果參數 src 和 dest 引用相同的數組對象,則複製的執行過程就好像首先將 srcPos 到 srcPos+length-1 位置的組件複製到一個帶有 length 組件的臨時數組,然後再將此臨時數組的內容複寫到目標數組的 destPos 到 destPos+length-1 位置一樣。
If 如果 dest 為 null,則拋出 NullPointerException 異常。
如果 src 為 null, 則拋出 NullPointerException 異常,並且不會修改目標數組。
否則,只要下列任何情況為真,則拋出 ArrayStoreException 異常並且不會修改目標數組: src 參數指的是非數組對象。 dest 參數指的是非數組對象。 src 參數和 dest 參數指的是那些其組件類型為不同基本類型的數組。 src 參數指的是具有基本組件類型的數組且 dest 參數指的是具有引用組件類型的數組。 src 參數指的是具有引用組件類型的數組且 dest 參數指的是具有基本組件類型的數組。
否則,只要下列任何情況為真,則拋出 IndexOutOfBoundsException 異常,並且不會修改目標數組: srcPos 參數為負。 destPos 參數為負。 length 參數為負。 srcPos+length 大於 src.length,即源數組的長度。 destPos+length 大於 dest.length,即目標數組的長度。
否則,如果源數組中 srcPos 到 srcPos+length-1 位置上的實際組件通過分配轉換並不能轉換成目標數組的組件類型,則拋出 ArrayStoreException 異常。在這種情況下,將 k 設定為比長度小的最小非負整數,這樣就無法將 src[srcPos+k] 轉換為目標數組的組件類型;當拋出異常時,從 srcPos 到 srcPos+k-1 位置上的源數組組件已經被複製到目標數組中的 destPos 到 destPos+k-1 位置,而目標數組中的其他位置不會被修改。(因為已經詳細說明過的那些限制,只能將此段落有效地應用於兩個數組都有參考型別的組件類型的情況。)
參數: src - 源數組。 srcPos - 源數組中的起始位置。 dest - 目標數組。 destPos - 目標資料中的起始位置。 length - 要複製的數組元素的數量。 拋出: IndexOutOfBoundsException - 如果複製會導致對數組範圍以外的資料的訪問。 ArrayStoreException - 如果因為類型不符而使得無法將 src 數組中的元素儲存到 dest 數組中。 NullPointerException - 如果 src 或 dest 為 null。