java中System.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 異常。

如果 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


參考來源java api:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh

發佈了29 篇原創文章 · 獲贊 10 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章