private void resize() { int[] arrayNew = new int[array.length*2] //把以前的陣列複製到新的陣列 System.arraycopy(array,0,arrayNew,0,array.length); array = arrayNew; }
轉載: https://www.cnblogs.com/WLCYSYS/p/13194286.html
從指定的源陣列(從指定位置開始)複製陣列到目標陣列的指定位置。陣列元件的子序列從引用的源陣列複製到引用src
的目標陣列dest
。複製的元件數等於length
引數。將源陣列中位置srcPos
到 的元件srcPos+length-1
分別複製到目標陣列中的位置destPos
到 destPos+length-1
。
如果src
和dest
引數是指相同的陣列物件,則複製是因為如果組分在位置執行srcPos
通過 srcPos+length-1
首先被複制到一個臨時陣列length
元件,然後將臨時陣列的內容被複制到的位置 destPos
通過destPos+length-1
目標陣列的。
如果dest
為null
,則 NullPointerException
丟擲。
如果src
為null
,則NullPointerException
丟擲 ,並且不修改目標陣列。
否則,如果滿足以下任一條件,則將ArrayStoreException
引發an 並且不會修改目標:
- 該
src
引數引用的不是陣列物件。 - 該
dest
引數引用的不是陣列物件。 - 的
src
引數和dest
引數指陣列,其部件型別是不同的原始型別。 - 自
src
變數引用具有原始元件型別的陣列,而自dest
變數引用具有參考元件型別的陣列。 - 自
src
變數引用具有引用元件型別的陣列,而自dest
變數引用具有原始元件型別的陣列。
否則,如果滿足以下任一條件,則將IndexOutOfBoundsException
引發an 並且不會修改目標:
- 該
srcPos引數為負值。
- 該
destPos引數為負值。
- 該
length引數為負值。
srcPos+length
大於src.length
,源陣列的長度。destPos+length
大於dest.length
,目標陣列的長度。
否則,如果源陣列中從位置srcPos
到 位置的任何實際元件srcPos+length-1
都無法通過賦值轉換轉換為目標陣列的元件型別,ArrayStoreException
則會引發an 。在這種情況下,令 k為小於長度的最小非負整數,以使src[srcPos+
k]
無法轉換為目標陣列的元件型別。當丟擲異常,從位置源陣列元件srcPos
通過 srcPos+
ķ-1
將已經被複制到目標陣列位置 destPos
通過 destPos+
ķ-1
並且不會修改目標陣列的其他位置。(由於已經逐項列出了限制,因此本段僅適用於兩個陣列都具有引用型別的元件型別的情況。)
- 引數:
- src 源陣列。
- srcPos 在源陣列中的起始位置。
- dest 目標陣列。
- 目標資料中的destPos起始位置。
- length 要複製的陣列元素的數量。
- 丟擲:
- IndexOutOfBoundsException-如果複製將導致超出陣列範圍的資料訪問。
- ArrayStoreException-如果由於型別不匹配
src
而無法將陣列中的元素儲存到dest
陣列中。 - NullPointerException異常 -如果任一
src
或者dest
是null
。