使用该方法时要输入的语句示例是
System.arraycopy(data, i, data, i+1, data.length-i-1);
根据我的书,它的工作方式是系统将所有元素从i
向上移动一个位置。但直觉上我会认为该方法会在i
一个位置之后移动所有元素。所以有空的空间来放置复制的元素。
我现在很困惑如何在同一个数组中移动元素。这句话真的说了什么?
答案 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 |-------------------------|