java arraycopy

arraycopy

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異常。 .net

若是src爲null, 則拋出NullPointerException異常,而且不會修改目標數組。 code

不然,只要下列任何狀況爲真,則拋出ArrayStoreException異常而且不會修改目標數組: 對象

  • src參數指的是非數組對象。
  • dest參數指的是非數組對象。
  • src參數和dest參數指的是那些其組件類型爲不一樣基本類型的數組。
  • src參數指的是具備基本組件類型的數組且dest參數指的是具備引用組件類型的數組。
  • src參數指的是具備引用組件類型的數組且dest參數指的是具備基本組件類型的數組。

不然,只要下列任何狀況爲真,則拋出IndexOutOfBoundsException異常,而且不會修改目標數組: get

  • 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位置,而目標數組中的其餘位置不會被修改。(由於已經詳細說明過的那些限制,只能將此段落有效地應用於兩個數組都有引用類型的組件類型的狀況。) io

參數: src- 源數組。srcPos- 源數組中的起始位置。dest- 目標數組。destPos- 目標數據中的起始位置。length- 要複製的數組元素的數量。 引用

拋出: IndexOutOfBoundsException- 若是複製會致使對數組範圍之外的數據的訪問。ArrayStoreException- 若是由於類型不匹配而使得沒法將src數組中的元素存儲到dest數組中。NullPointerException- 若是src或dest爲null。 數據

相關文章
相關標籤/搜索