意外的ArrayStoreException

Joh*_*nna 2 java

为什么以下代码抛出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);
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 12

来自以下文档System.arraycopy:

否则,如果满足以下任何条件,则抛出ArrayStoreException并且不修改目标:

[...]

src参数和dest参数引用其组件类型为不同基本类型的数组.

这就是这里的情况 - int并且double是不同的原始类型,因此如文档所述抛出异常.

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