为什么以下代码抛出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参数
引用其组件类型的数组
是不同的原始类型。
此处就是这种情况-int
和double
是不同的原始类型,因此按文档所述抛出异常。arraycopy
的要点是,它可以通过盲目复制原始数据而盲目快速地工作,而无需进行任何转换。在您的情况下,它必须应用转换,因此失败。