java数组用Array.fill赋值问题

图片说明

为什么a3[0].i=30语句执行后整个数组元素都变了?请不吝赐教,谢谢!

2个回答

arrays.fill的源码如下,Arrays.fill(a3,new B(3)),这里val都是一个对象,所以整个a3数组都是一个对象.

 public static void (Object[] a, Object val) {
    for (int i = 0, len = a.length; i < len; i++)
        a[i] = val;
}

因为 经过fill之后它们指向的是同一个地址,这个地址再指向一个内容。所以当你改变其中一个值的时候事实上是改变这个地址所指向的内容。因为它们都指向同一个内容,而你又修改了内容,所以所得结果当然是全部都改变了。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐