您的位置:首页 > 运维架构

System.arraycopy()实现数组之间的复制

2016-05-10 13:13 351 查看
System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制。其函数原型是: public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) src:源数组; srcPos:源数组要复制的起始位置; dest:目的数组; destPos:目的数组放置的起始位置; length:复制的长度。 注意:src
and dest都必须是同类型或者可以进行转换类型的数组. 有趣的是这个函数可以实现自己到自己复制,比如: int[] fun ={0,1,2,3,4,5,6}; System.arraycopy(fun,0,fun,3,3); 则结果为:{0,1,2,0,1,2,6}; 实现过程是这样的,先生成一个长度为length的临时数组,将fun数组中srcPos 到srcPos+length-1之间的数据拷贝到临时数组中,再执行System.arraycopy(临时数组,0,fun,3,3).

Java System.arraycopy()方法用法实例教程,复制指定的源数组的数组,在指定的位置开始,到目标数组的指定位置


描述

java.lang.System.arraycopy() 方法复制指定的源数组的数组,在指定的位置开始,到目标数组的指定位置。阵列组件的一个子序列被复制从由src引用的源数组到目标数组引用bydest。复制的组件的数量是相等的length 参数.

组成部分源数组中的位置srcPos到srcPos + length-1复制到的位置的destPos到destPos + length - 1,目标数组。


声明

以下是java.lang.System.arraycopy()方法的声明
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)


参数

src -- 这是源数组.

srcPos -- 这是源数组中的起始位置。

dest -- 这是目标数组。

destPos -- 这是目标数据中的起始位置。

length -- 这是一个要复制的数组元素的数目。


返回值

此方法不返回任何值。


异常

IndexOutOfBoundsException -- 如果复制会导致访问数组边界之外的数据

ArrayStoreException -- 如果src数组中的元素不能被存储到dest数组中,因为类型不匹配

NullPointerException -- 如果src或dest为null


实例

下面的例子说明了如何使用java.lang.System.arraycopy()方法。
package com.yiibai;

import java.lang.*;

public class SystemDemo {

public static void main(String[] args) {

int arr1[] = { 0, 1, 2, 3, 4, 5 };
int arr2[] = { 0, 10, 20, 30, 40, 50 };

// copies an array from the specified source array
System.arraycopy(arr1, 0, arr2, 0, 1);
System.out.print("array2 = ");
System.out.print(arr2[0] + " ");
System.out.print(arr2[1] + " ");
System.out.print(arr2[2] + " ");
System.out.print(arr2[3] + " ");
System.out.print(arr2[4] + " ");
}
}


让我们来编译和运行上面的程序,这将产生以下结果:
array2 = 0 10 20 30 40


public class arraycopy {

public static void main(String[] args) {
// TODO Auto-generated method stub
int s[] = { 1,2,3,4,5,6 };
int d[] = { 10,9,8,7,6,5,4,3,2,1 };
System.arraycopy( s, 0, d, 0, s.length );
for (int i = 0; i < s.length; i++ )
System.out.println("s[" + 1 + "]=" + s[i]);
for (int i = 0; i < d.length; i++ )
System.out.println("d[" + i + "]=" + d[i]);
}
}

输出结果:
s[1]=1
s[1]=2
s[1]=3
s[1]=4
s[1]=5
s[1]=6
d[0]=1
d[1]=2
d[2]=3
d[3]=4
d[4]=5
d[5]=6
d[6]=4
d[7]=3
d[8]=2
d[9]=1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: