数组的高级使用--数组的复制

文章介绍了Java中复制数组的三种方式:Arrays.copyOf、Arrays.copyOfRange和System.arraycopy。Arrays类的方法提供了便利的数组复制,而System.arraycopy更底层且高效。所有这些复制操作都是浅层复制,仅复制对象引用而非对象内容。文章还给出了示例代码和内存结构的说明。
摘要由CSDN通过智能技术生成

数组复制的两种方式

通过Arrays类

Arrays.copyOf(Object [] original, int newl ength)
Arrays.copyOfRange(Object [] original, int from, int to)

推荐使用这个

通过system类

System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

复制的推荐使用这个

两种复制的区别

  1. Arrays里 面的两种复制方法底层仍然是System的复制,只不过在System基础上进行了一个次封装,变得更加的方便;
  2. Arrays完成复制之后,会把新数组返回来,而System则 需要你提前定义好一个数组 ;

demo

copy

		int [] source = {1,2,3,4,5,6};
		//1、copyOf
		int [] newArray = Arrays.copyOf(source, source.length);
		System.out.println(Arrays.toString(newArray));
		//1.1、我们在进行复制的时候,可以完成数组的扩容
		int [] newArray3 = Arrays.copyOf(source, source.length*2);
		System.out.println(Arrays.toString(newArray3));

copyOfRange

		//2、copyOfRange
		int [] newArray1 = Arrays.copyOfRange(source, 3,source.length);//包前不包后
		System.out.println(Arrays.toString(newArray1));

System.arraycopy

		//3、System.arraycopy
		int [] newArray2 = new int[source.length];
		System.arraycopy(source, 0, newArray2, 0, source.length);
		System.out.println(Arrays.toString(newArray2));
		//3.1、把原始数组中的3,4这两个元素复制到新的数组中的5,6这两个位置中去
		int [] newArray4 = new int[source.length];
		System.arraycopy(source, 2, newArray4, 4, 2);
		System.out.println(Arrays.toString(newArray4));

数组复制的内存结构

数组里面的元素是基本数据类型

在这里插入图片描述

数组里面的元素是引用数据类型

在这里插入图片描述

这种类型是浅层复制

浅层复制

浅层复制:只复制最外层容器,而不复制容器里面的元素,JavaAPI中所有
的复制都是浅层复制,浅层复制的效率快,能适用大部分的场景;

深层复制:

不仅复制外层容器,还复制了容器里面的所有元素,我们常用的
深层复制方式是使用I0流中的序列化和反序列化,效率低,只适用于一些特
殊场合;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值