java - System.arraycopy问题

标签 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,但事实并非如此,因为正确的答案是123456。我多次阅读了有关此方法的java文档,但我无法理解为什么我会得到这个结果。 对此有什么建议吗?

更新1 在我更新后,正确答案是 123456。不同之处在于,在这种情况下源数组和目标数组是相同的。来自java doc:如果 src 和 dest 参数引用相同的数组对象,则执行复制,就好像位置 srcPos 到 srcPos+length-1 处的组件首先复制到具有 length 组件的临时数组,然后临时数组的内容通过目标数组的 destPos+length-1 复制到位置 destPos

最佳答案

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

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

根据您的新编辑,正确答案再次不是 123456,而是您预期的 123345

关于java - System.arraycopy问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29580440/

相关文章:

java - C# 中的 readInt16() 与 java 中的 readShort()

java - @JsonDeserialize 注释不起作用

java - IntelliJ IDEA 12 - 新的 Android 应用程序模块向导失败并显示 "cannot find resource directory for module"

java - Cassandra 实体必须具有 @Table、@Persistent 或 @PrimaryKeyClass 注解

python - 如何获取 numpy 数组中给定项目的列索引和行索引(y 和 x)

java - Jackson POJO 映射 ArrayList<Class> 无法识别的字段

java - 请求澄清多线程环境中 TransformerFactory 的 XSLT Transformer

javascript - 如何将多维数组映射到 html Canvas 中的矩形网格?

c - 只要输入字符串数组

java - 将数组写入文件