public class AdvancedArray { public static void main(String[] args) { int[] refer = {, 2, 3, 4, 5}; int[] cop1; int[] cop2; cop1 = refer; cop2 = refer; for(int i = 0; i ; cop1.length; i++) System.out.print(cop1[i] + " "); System.out.println(); for(int i = 0; i ; cop2.length; i++) System.out.print(cop2[i] + " "); System.out.println(); cop1[2] = 8; for(int i = 0; i ; cop1.length; i++) System.out.print(tmp1[i] + " "); System.out.println(); for(int i = 0; i ; cop2.length; i++) System.out.print(tmp2[i] + " "); System.out.println(); } }
執行結果:
1 2 3 4 5
1 2 3 4 5
1 2 8 4 5
1 2 8 4 5
上述的程式碼,三個陣列 refer、cop1、cop2都參考至同一個陣列物件,
所以當上述的程式碼透過cop2更改陣列第2個索引值時,也同時改變的refer、col1的值。
如果是想要copy陣列,而不是參考陣列
Java裡的System類別的靜態方法arraycopy(),提供了copy陣列的函式
System.arraycopy(來源, 起始索引, 目的, 起始索引, 複製長度);
範例程式碼如下int[] arr1 = {1, 2, 3, 4, 5}; int[] arr2 = new int[5]; System.arraycopy(arr1, 0, arr2, 0, arr1.length); for(int i = 0; i < arr2.length; i++) System.out.print(arr2[i] + " "); System.out.println();執行結果: 1 2 3 4 5
在Java 版本 1.6之後提供了另一個更方便的copy array函式
在Arrays類別底下提供copyOfRange這個method
Arrays.copyOfRange(src, from, to)
其中from和to分別代表陣列的索引值,換言之,「to-from」則是複製的個數。int array1[] = {1,2,3,4,5}; int array2[]; array2 = Arrays.copyOfRange(array1, 1, 4);
則array2的內容會是{2,3,4}
參考網址1
參考網址2