Java中System.arraycopy()的定义如下,没有返回值。
arraycopy(Object src, int srcPos,Object dest, int destPos,int length);
它是一个静态本地方法,由虚拟机实现,其参数解释如下:
序号 | 参数 | 解释 |
---|---|---|
1 | src | 原数组 |
2 | srcPos | 原数组位置,即数组的下标 |
3 | dest | 目标数组 |
4 | destPos | 目标数组接收起始位置,即数组的小标 |
5 | length | 被复制数组的长度 |
从上面的参数可以得知,该函数的作用是:复制src数组到dest数组。
看一个例子:
int []a = {1,2,3};
int []b = {4,5,6};
int []c = new int [a.length+b.length];
System.arraycopy(a, 0, c, 0, a.length);//a复制给c,从位置0开始,复制的长度是a.length
System.arraycopy(b, 0, c, a.length, b.length);//b赋值给c,从a.length下标开始,复制的长度是b.length
for (int i = 0; i < c.length; i++) {
System.out.println(c[i]);
}
输出:
1
2
3
4
5
6
2
3
4
5
6
上面例子的过程如下:
创建3个数组a,b和c,其中是c的长度是a,b之和。
然后使用System.arraycopy函数两步复制。
- a复制给c,从位置0开始,复制的长度是a.length
- b赋值给c,从a.length下标开始,复制的长度是b.length
最后得出c的数组为a和b的合集。