很多初學者分不清數組的複製和起別名之間的區別,或者說難以察覺,常常搞混。現在我們來看一下。
1、先來看一下數組複製代碼a:
int N=a.length;
double[] b=new double[N];
for(int i=0;i<N;i++)
b[i]=a[i];
2、再來看一下 給數組起別名的代碼b:
int[] a=new int[N];
...
a[i]=1234;
...
int[] b=a;
...
b[i]=5678; //a[i]的值也會變成5678
3、徹底弄清它們
-
對於a,數組一經聲明創建後,它的大小就是固定的。程序能夠通過 a.length 獲取數組 a[ ] 的長度,而它的最後一個元素總是 a[a.length-1] 。然後將原數組中的元素值挨個複製到新數組。
-
對於 b,數組名錶示的是整個數組------如果我們將數組變量賦予另一個變量,那麼兩個變量會指向同一個數組。
-
所以:
關鍵在:a中的double[] b=new double[N];語句。它創建了一個新的數組。