System.arraycopy方法

数组的复制有多种方法,其中有一种就是System.arraycopy方法,传闻速度也很快.

方法完整签名:

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

参数

@ src -- 这是源数组 @ srcPos -- 这是源数组中的起始位置 @dest -- 这是目标数组 @ destPos -- 这是目标数据中的起始位置  @ length -- 这是一个要复制的数组元素的数目

ex.

int arr1[] = {0,1,2,3,4,5};
int arr2[] = {0,10,20,30,40,50};
System.arraycopy(arr1,0,arr2,1,2);
结果:arr2 = [0,0,1,30,40,50];
System.arraycopy方法经常与Array类中的newInstance(Creates a new array with the specified component type and length)方法一起使用,如:
public static Object copyOf(Object a,int newLength){
    Class cl = a.getClass();
    if(!cl.isArray()) return null;
    Class componentType =cl.getComponentType();
    int length = Array.getLength(a);
    Object newArray = Array.newInstance(componentType,newLength);
    System.arraycopy(a,0,newArray,0,Math.min(length,newLength));
    return newArray;}

这里说明一下,接收参数是Object对象,在调用Array.newInstance的时候,产生的数组类型是componentType,即与接收参数相同的类型,意味着最终返回的Object对象可以强制转换成与原数组类型相同的新数组对象,达到新建拷贝的目的,上面是通用拷贝的写法.

时间: 2024-08-21 23:59:59

System.arraycopy方法的相关文章

System.arraycopy方法实现数组的复制

1-1:System中提供了一个native静态方法arraycopy(),可以使用这个方法实现数组之间的复制.对于普通的一维数组来说,会复制每个数组的值到另一个数组中,即每个元素都是按值传递,修改副本不会影响原来的值.方法原型及复制复制基本类型数组的示例如下: /** * System.arraycopy的方法原型 * @param src       要复制的源数组 * @param srcPos    源数组要复制的起始位置(从0开始) * @param dest      要复制的目标数

Java中 System.arraycopy() 和 Arrays.copyOf()方法

System.arraycopy() 和 Arrays.copyOf()方法 阅读源码的话,我们就会发现 ArrayList 中大量调用了这两个方法.比如:我们上面讲的扩容操作以及add(int index, E element).toArray() 等方法中都用到了该方法! System.arraycopy() 方法 /** * 在此列表中的指定位置插入指定的元素. *先调用 rangeCheckForAdd 对index进行界限检查:然后调用 ensureCapacityInternal 方

System.arraycopy()和Arrays.copyOf()的区别

先看看System.arraycopy()的声明: public static native void arraycopy(Object src,int srcPos, Object dest, int destPos,int length); src - 源数组. srcPos - 源数组中的起始位置. dest - 目标数组. destPos - 目标数据中的起始位置. length - 要复制的数组元素的数量. 该方法用了native关键字,说明调用的是其他语言写的底层函数. 再看Arra

Java System.arraycopy

System.arraycopy方法:如果是数组比较大,那么使用System.arraycopy会比较有优势,因为其使用的是内存复制,省去了大量的数组寻址访问等时间 public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length); 复制指定源数组src到目标数组dest.复制从src的srcPos索引开始,复制的个数是length,复制到dest的索引从destPo

java.lang.System.arraycopy() 与java.util.Arrays.copyOf()的区别

java.lang.System.arraycopy() 与java.util.Arrays.copyOf()的区别 一.java.lang.System.arraycopy() 该方法的声明: /* @param src 源数组 * @param srcPos 源数组中的起始位置 * @param dest 目标数组 * @param destPos 目标数组中的起始位置 * @param length 需要被复制的元素个数 * @exception IndexOutOfBoundsExcep

java System.arrayCopy使用说明

java.lang.System.arraycopy() 方法复制指定的源数组的数组,在指定的位置开始,到目标数组的指定位置. 下面是 System.arrayCopy的源代码声明 : public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)代码解释: Object src : 原数组 int srcPos : 从元数据的起始位置开始 Object dest : 目标数组

[Java基础] System.arraycopy使用

转载自:http://blog.csdn.net/java2000_net/article/details/4059465 System提供了一个native 静态方法arraycopy(),我们可以使用它来实现数组之间的复制.其函数原型是: public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) src:源数组: srcPos:源数组要复制的起始位置: dest:目的数

Java基础知识强化86:System类之arraycopy()方法(数组拷贝)

1. arraycopy方法(数组拷贝) 1 public static void arraycopy(object src,int srcPos,Object dest,int destPos, int length) 从指定的数组中复制一个数组,复制从指定位置开始,到目标数组的指定位置结束. 参数:        src - 源数组        srcPos - 源数组中的起始位置        dest - 目的数组        destPos - 目标数据中的起始位置        

java数组的拷贝四种方法:for、clone、System.arraycopy、arrays.copyof

public class ArrayCopy{ public static void main(String []args){ int []a = {1,3,4,5}; toPrint(a); int []aFor=new int[a.length]; //1.for循环复制 System.out.println("===========1.使用for复制"); for(int i=0;i<a.length;i++){ aFor[i]=a[i]; } aFor[2]=10;//改