8.4 复制数组
8.2 节中说过,数组变量包含指向数组的引用。给数组变量赋值时,只复制指向数组的引用,而不会复制数组本身!请看下面的示例:
double[] a = new double[3];double[] b = a;
这些语句创建了一个包含 3 个元素的 double 数组,并让两个变量指向它,如图 8-3 所示。

图 8-3:显示两个变量指向同一个数组的状态图
通过其中任何一个变量修改数组都将影响另一个变量。例如,如果我们设置 a[0] = 17.0,再显示 b[0],结果将为 17.0。因为 a 和 b 是表示同一样东西的不同名称,所以它们有时被称为别名(alias)。
如果要复制数组本身而不是指向它的引用,那么就必须创建一个新的数组,并将旧数组中的每个元素都复制到新数组中,如下所示:
double[] b = new double[3];for (int i = 0; i < 3; i++) {b[i] = a[i];}
另一种选择是使用 java.util.Arrays,它提供了复制数组的方法 copyOf,可像下面这样调用这个方法:
double[] b = Arrays.copyOf(a, 3);
其中的第二个参数用来指定要复制的元素个数,因此你也可以只复制数组的一部分。
