System.arraycopy问题

时间:2015-04-11 16:48:28

标签: java arrays

我正在准备一份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的位置

1 个答案:

答案 0 :(得分:3)

你是对的,正确答案是123346。我不知道你在哪里看到它应该是123456,但是看看每个参数的描述显然没有意义。

  • 第一个参数是来源,{1,2,3,4,5,6}
  • 第二个参数是源数组中的起始位置。
  • 第三个参数是我们复制的目的地,在这种情况下与源相同。
  • 目标数据中的第四个参数起始位置。在那种情况下是3。
  • 最终参数是我们要复制的值的长度。

根据您的新修改,正确的答案不会像您预期的那样123456 123345