System.arraycopy

public static native void arraycopy(Object src,  int  srcPos, Object dest, int destPos, int length);

 参数说明:

    src:源数组; 
    srcPos:源数组要复制的起始位置; 
    dest:目的数组; 
    destPos:目的数组放置的起始位置; 
    length:复制的长度
原理:
    实现过程是这样的,先生成一个长度为length的临时数组,将src数组中srcPos 到srcPos+length-1之间的数据拷贝到临时数组中,再执行System.arraycopy(临时组,srcPos,dest,destPos,length).
注意:
    1、src 和 dest都必须是同类型或者可以进行转换类型的数组
    2、srcPos、srcPos+length-1都必须小于src的size,destPos、destPos+length-1也必须小于dest的size。
    3、临时数组必须能一一对应到dest数组中。
例:    
 int[] fun ={0,1,2,3,4,5,6};
 int[] fun1 = {7,8,9,10};
 /**
  * 两个不同数组间的拷贝
  * 1、拷贝fun中索引3到5(3+3-1)数据到临时数组中,生成临时数组int[] tmp = {3,4,5}。
  * 2、替换fun1中索引从1到3(1+3-1)的元素。
  */
 System.arraycopy(fun, 3, fun1, 1, 3);//结果为fun不变,fun1变为{7,3,4,5}
 
 /**
  * 同一个数组自己到自己的拷贝
  * 1、拷贝fun中索引3到6(3+4-1)数据到临时数组中,生成临时数组int[] tmp = {3,4,5,6}
  * 2、替换fun中索引2到5(2+4-1)的元素。
  */
 System.arraycopy(fun, 3, fun, 2, 4);//结果fun为{0,1,3,4,5,6,6}

 

posted @ 2016-07-02 11:02  请叫我大表哥  阅读(514)  评论(0编辑  收藏  举报