现在还分不清数组的复制和起别名吗?

很多初学者分不清数组的复制和起别名之间的区别,或者说难以察觉,常常搞混。现在我们来看一下。

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];语句。它创建了一个新的数组。

发布了9 篇原创文章 · 获赞 18 · 访问量 1046

猜你喜欢

转载自blog.csdn.net/qq_44222849/article/details/105314549