System.arraycopy方法如何工作?

时间:2014-12-17 03:33:56

标签: java arrays

使用该方法时要输入的语句示例是

System.arraycopy(data, i, data, i+1, data.length-i-1);

根据我的书,它的工作方式是系统将所有元素从i向上移动一个位置。但直觉上我会认为该方法会在i一个位置之后移动所有元素。所以有空的空间来放置复制的元素。

我现在很困惑如何在同一个数组中移动元素。这句话真的说了什么?

1 个答案:

答案 0 :(得分:3)

System.arraycopy的定义是

System.arraycopy(Object src, int srcPos,
                 Object dest, int destPos,
                 int length)

因此,此代码复制

data[i .. (i + n - i - 1)] = data[i..(n-1)]

data[i+1 .. (i+1 + n-i-1)] = data[i+1..n]

(范围包括前面但不包括背面,n = data.length

因此留下了空白"发现在data[i]。图形:

       [0] [1] [2] [3] ... [i] [i+1] [i+2] ... [n-2] [n-1]
   src                     |-----------------------|
   dest                        |-------------------------|