System.copyarray(Object src, int srcPos, Object dest, int destPos, int length);
Posted on 2009-07-12 23:28 Gavin.lee 閱讀(2237) 評論(0) 編輯 收藏 所屬分類: java SE & EEarraycopy-------From JDK6.0
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
。



























