1. 程式人生 > 實用技巧 >JAVA陣列拷貝

JAVA陣列拷貝

在java中,允許將一個數組變數拷貝給另一個數組變數.這時,兩個變數將引用同一個陣列(陣列在記憶體中只有一個,只是這兩個陣列變數都指向陣列的首地址)

int[] smallPrimes = {2,3,4,5,6,7};
int[] luckNumber = smallPrimes;
System.out.println(Arrays.toString(smallPrimes));
luckNumber[5] = 12;
System.out.println(Arrays.toString(smallPrimes));
[2, 3, 4, 5, 6, 7]
[2, 3, 4, 5, 6, 12]  // 這裡修改了luckNumber,smallPrimes數值也跟著改變了,就說明兩個指向的是同一個地址

如果希望將一個數組的所有值拷貝到一個新的陣列中去,就要使用Arrays類的copyOf方法

int[] smallPrimes = {2,3,4,5,6,7};
int[] copyLuckNumbers = Arrays.copyOf(smallPrimes,smallPrimes.length);
System.out.println(Arrays.toString(smallPrimes));
copyLuckNumbers[5] = 12;
System.out.println(Arrays.toString(smallPrimes)); System.out.println(Arrays.toString(copyLuckNumbers));
[2, 3, 4, 5, 6, 7]
[2, 3, 4, 5, 6, 7]  //只複製了值,這裡copyLuckNumbers 是重新開闢的一個空間

[2, 3, 4, 5, 6, 12]
copyOf()方法的第二個引數是陣列長度,這個方法通常用來增加陣列的大小
int[] smallPrimes = {2,3,4,5,6,7};
smallPrimes = Arrays.copyOf(smallPrimes,2*smallPrimes.length);

如果陣列元素是數值型,那麼多餘的元素將被賦值為0;如果陣列元素是布林型,則將賦值為false.相反,如果長度小於原始陣列的長度,則之拷貝最前面的元素.