前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java中复制数组的4中方法

java中复制数组的4中方法

作者头像
林老师带你学编程
发布2022-11-30 10:34:42
1.2K0
发布2022-11-30 10:34:42
举报
文章被收录于专栏:强仔仔强仔仔

在开发的过程中很多情况都要对数组进行复制,下面举例介绍一下java中四种数组的复制。

第一种:通过for循环进行数组的复制,例如:

代码语言:javascript
复制
		Object[] num={1,2,3,4,5};
		Object[] num1=new Object[num.length];
		for(int i=0;i<num.length;i++){
			num1[i]=num[i];
		}
		for(Object i:num){
			System.out.print("num:"+i+"\t");
		}
		System.out.println();
		for(Object i:num1){
			System.out.print("num1:"+i+"\t");
		}

运行结果:

代码语言:javascript
复制
num:1	num:2	num:3	num:4	num:5	
num1:1	num1:2	num1:3	num1:4	num1:5	

这种方式最大的问题就是麻烦,如果要复制多个数组就可能要进行多个循环复制。相当麻烦,不推荐大家使用这种方式进行数组复制操作。

第二种:通过java中clone方法进行数组复制。例如:

代码语言:javascript
复制
		Object[] num2=num.clone();
		for(Object i:num){
			System.out.print("num:"+i+"\t");
		}
		System.out.println();
		for(Object i:num2){
			System.out.print("num2:"+i+"\t");
		}

运行结果:

代码语言:javascript
复制
num:1	num:2	num:3	num:4	num:5	
num2:1	num2:2	num2:3	num2:4	num2:5	

这种方式比对第一种方式就是方便,只需要一个函数就可以实现。但是对数组的灵活度就大大降低,这样的复制操作只能是全部复制不能部分复制。在需要完整的复制整个数组的时候可以考虑使用这种方式。

第三种:利用java中的Arrays.copyOf(original, newLength)函数进行复制操作。下面看例子:

代码语言:javascript
复制
		Object[] num={1,2,3,4,5};
		Object[] num3=Arrays.copyOf(num, 4);
		Object[] num4=Arrays.copyOf(num, 8);
		for(Object i:num3){
			System.out.print("num3:"+i+"\t");
		}
		System.out.println();
		for(Object i:num4){
			System.out.print("num4:"+i+"\t");
		}

运行结果:

代码语言:javascript
复制
num3:1	num3:2	num3:3	num3:4	
num4:1	num4:2	num4:3	num4:4	num4:5	num4:null	num4:null	num4:null

这里的newLength指的是数组的需要复制的长度,如果小于原数组则只复制指定长度,如果大于原数组长度则空出部分为空。

这种方式对比前两种一个是简单,另一个是灵活度比较好。可以选择复制数组中一部分长度,如果长度过长则空出部分为空。

第四种:利用java中的System.arraycopy(src, srcPos, dest, destPos, length)进行数组复制操作。下面看例子:

代码语言:javascript
复制
/*
		 * 参数:
		src - 源数组。
		srcPos - 源数组中的起始位置。
		dest - 目标数组。
		destPos - 目标数据中的起始位置。
		length - 要复制的数组元素的数量。
		抛出:
		IndexOutOfBoundsException - 如果复制会导致对数组范围以外的数据的访问。
		ArrayStoreException - 如果因为类型不匹配而使得无法将 src 数组中的元素存储到 dest 数组中。
		NullPointerException - 如果 src 或 dest 为 null。
		 */
		Object[] num={1,2,3,4,5,null,null,null};
		Object[] num3={6,7,8};
		System.arraycopy(num3,0, num, 5, 3);
		for(Object i:num){
			System.out.print("num:"+i+"\t");
		}

运行结果:

代码语言:javascript
复制
num:1	num:2	num:3	num:4	num:5	num:6	num:7	num:8	

这种方式最大的好处就是特别灵活,可以选择的复制数组中的任意数据到指定数组中去。唯一的缺点可能就是操作难度较高,容易出错,不容易掌握。

这四种数组复制方式大家可以根据项目需要来具体选择使用。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档