Java 数组复制
2021-04-22 21:26
标签:copy for 循环 OLE 组复制 数据 目标 for循环 for 对象 在Java中数组的复制几种比较通用的方法 1、for 循环逐个复制 2、System.arraycopy 讲解: 3、Arrays.copyOf 讲解: 4、Arrays.copyOfRange 讲解: 5、Object.clone 讲解: 效率:System.arraycopy > Object.clone > (Arrays.copyOf、Arrays.copyOfRange)> for循环 Java 数组复制 标签:copy for 循环 OLE 组复制 数据 目标 for循环 for 对象 原文地址:https://www.cnblogs.com/lililixuefei/p/13275281.html //源数组
int[] source = {4,5,1,2,3};
//目标数组
int[] target = new int[source.length];
for (int i = 0;i ){
target[i] = source[i];
}
int[] source= {4,5,1,2,3};
int[] target= new int[source.length];
System.arraycopy(source, 0, target, 0, source.length);
/**
* 构造方法
* 从原数组中的第srcPos个位置起复制length个元素到目标数组的第destPos个位置
*
* src:源数组
* srcPos:源数组中的起始位置
* dest:目标数组
* destPos:目标数据中的起始位置
* length:要复制的数组元素的数量
* 注:sr c和 des 都必须是同类型或者可以进行转换类型的数组
*/
public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);int[] source= {4,5,1,2,3};
int[] target= new int[5];
target= Arrays.copyOf(source, 5);
/**
* 构造方法(以传递int型数组为例)
* 复制指定的数组,返回原数组的副本
* original:源数组,可以为byte,short,int,long,char,float,double,boolean
* newLength:新数组的长度
*/
public static int[] copyOf(int[] original, int newLength);
int[] source= {4,5,1,2,3};
int[] target= new int[5];
target= Arrays.copyOfRange(source, 0, 5);
/** 构造方法(以传递int型数组为例)
* 复制原数组original的指定部分(从from到(to-1)位),返回原数组的副本
* original:源数组,可以为byte,short,int,long,char,float,double,boolean
* from:源数组被复制的起始位置
* to: 源数组被复制的中止位置(不包括to本身)
*
*/
public static int[] copyOfRange(int[] original, int from, int to);
int[] source={1,3,5,6,7,8};
int[] target;
target=(int[])source.clone();//使用clone创建
clone()方法不仅仅是将一个数组引用赋值为另外一个数组引用,而是创建一个新的数组。
但是我们知道,对于数组本身而言,当它的元素是对象时,本来数组每个元素中保存的就是对象的引用,
所以拷贝过来的数组自然而言也是对象的引用,所以对于数组对象元素而言,clone()方法是浅拷贝
注:使用clone方法,得返回值类型为Object类型,所以赋值时将发生强转,因此效率较低