这里没有任何“怪异”现象:数组变量是 对 实际数组的 引用 (在其他语言中也称为指针)。当您操纵数组变量时,您要做的就是操纵指针。
当您将一个数组变量分配给另一个变量时,将为您分配的变量所指向的数组创建一个 别名 ,并使先前被分配的变量所指向的数组符合垃圾回收的条件。由于分配
a =b,使
a一个别名
b,填充
b数据的行为完全一样的填充
a数据:一旦分配完成,
a而
b仅仅是同一事物的两个不同的名字。
就 按值传递
而言,在您的示例中没有任何作用:按值传递的概念仅在将对象作为参数传递给调用的方法时适用。在你的例子,变量
a,
b,
c,和
d是不是方法的参数,它们是局部变量。你做参考方法,通过他们
toString和
fill(或者更准确地说,按值引用传递给你的对象
toString和
fill,因为在Java一切都是按值传递),这就是为什么修改您的阵列将完成
fill须待返回可见从方法。



