我正在准备一份oca认证1Z0-803考试,在一些模拟考试中我遇到了以下问题:
int[] scores = { 1, 2, 3, 4, 5, 6};
System.arraycopy(scores, 2, scores, 3, 3);
for(int i : scores)
System.out.print(i);
我认为正确答案可能是123345,但事实并非如此,因为正确的anserw是123456.我多次读过关于这种方法的java文档,但我无法理解为什么我会这样做结果。 关于这个的一些建议?
更新1 更新后,正确的答案是123456.区别在于,在这种情况下,源阵列和目标阵列是相同的。从java doc:如果src和dest参数引用相同的数组对象,则执行复制,就好像位置srcPos到srcPos + length-1的组件首先被复制到具有长度组件的临时数组,然后临时数组的内容被复制到destPos到destPos +目标数组的长度为1的位置
答案 0 :(得分:3)
你是对的,正确答案是123346
。我不知道你在哪里看到它应该是123456
,但是看看每个参数的描述显然没有意义。
{1,2,3,4,5,6}
根据您的新修改,正确的答案不会像您预期的那样123456
123345
。