为什么以下代码抛出ArrayStoreException

double[] a = {2.0,3.4,3.6,2.7,5.6};
int[] b = {2,3,4,5};
System.arraycopy(b,0,a,1,4);

最佳答案

System.arraycopy的文档中:


否则,如果以下任何一项是
是的,抛出ArrayStoreException
并且目标未修改:

[...]

src参数和dest参数
引用其组件类型的数组
是不同的原始类型。


此处就是这种情况-intdouble是不同的原始类型,因此按文档所述抛出异常。

arraycopy的要点是,它可以通过盲目复制原始数据而盲目快速地工作,而无需进行任何转换。在您的情况下,它必须应用转换,因此失败。

10-06 04:58