現在還分不清數組的複製和起別名嗎?

很多初學者分不清數組的複製和起別名之間的區別,或者說難以察覺,常常搞混。現在我們來看一下。

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];語句。它創建了一個新的數組。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章