JAVA陣列拷貝
阿新 • • 發佈:2020-09-20
在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.相反,如果長度小於原始陣列的長度,則之拷貝最前面的元素.