码迷,mamicode.com
首页 > 编程语言 > 详细

Java 数组复制

时间:2020-07-09 19:14:26      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:copy   for 循环   OLE   组复制   数据   目标   for循环   for   对象   

在Java中数组的复制几种比较通用的方法

1、for 循环逐个复制

 //源数组
int[] source = {4,5,1,2,3};
//目标数组
int[] target = new int[source.length];
for (int i = 0;i < source.length;i++){
   target[i] = source[i];
}

2、System.arraycopy

 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);

3、Arrays.copyOf

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);

4、Arrays.copyOfRange

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);

5、Object.clone

int[] source={1,3,5,6,7,8};
int[] target;
target=(int[])source.clone();//使用clone创建

讲解:

clone()方法不仅仅是将一个数组引用赋值为另外一个数组引用,而是创建一个新的数组。
    但是我们知道,对于数组本身而言,当它的元素是对象时,本来数组每个元素中保存的就是对象的引用,
       所以拷贝过来的数组自然而言也是对象的引用,所以对于数组对象元素而言,clone()方法是浅拷贝

注:使用clone方法,得返回值类型为Object类型,所以赋值时将发生强转,因此效率较低

效率:System.arraycopy > Object.clone > (Arrays.copyOf、Arrays.copyOfRange)> for循环 

Java 数组复制

标签:copy   for 循环   OLE   组复制   数据   目标   for循环   for   对象   

原文地址:https://www.cnblogs.com/lililixuefei/p/13275281.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!