java学习笔记------Arrays.copyOf();和System.arraycopy();

Arrays

Arrays.copyOf(original, newLength);和System.arraycopy(src, srcPos, dest, destPos, length);的概念,每个参数的意义和它们的用法。

Arrays.copyOf(original, newLength);

概念:Arrays.copyOf();的实质其实就是改变数组的长度,实现数组的扩容和缩容。
Arrays.copyOf(original,newLength);
         original:需要改变的数组名
         newLength:数组改变后新的长度
效果展示:(数组缩容)
代码如下:

public static void main(String[] args) {
		//定义一个初始数组,初始数组的长度为8
		int[] a = {1,2,3,4,5,6,7,8};
		System.out.println("源数组:"+Arrays.toString(a));
		//数组缩容,将数组的长度由8缩小为5
		      a = Arrays.copyOf(a, 5);
		System.out.println("缩容后的数组:"+Arrays.toString(a));
	}

输出结果:
在这里插入图片描述

数组缩容后,缩容部分的数据会被抹除,不再显示。

效果展示2:(数组扩容)
代码如下:

public static void main(String[] args) {
		//定义一个初始数组,初始数组的长度为8
		int[] a = {1,2,3,4,5,6,7,8};
		System.out.println("源数组:"+Arrays.toString(a));
		//数组扩容,将数组的长度由8扩展为10
		      a = Arrays.copyOf(a, 10);
		System.out.println("缩容后的数组:"+Arrays.toString(a));
	}

输出结果:
在这里插入图片描述
数组扩容后,扩大部分的数据会默认填充为类型的默认值。

System.arraycopy(src, srcPos, dest, destPos, length);

概念:将一个数组中的数据拷贝到另一个数组中。
System.arraycopy(src,
                              srcPos,
                              dest,
                              destPos,
                              length);
src:源数组
srcPos:源数组需要拷贝的起始位置
dest:目标数组
destPos:拷贝数据在目标数组的起始位置
length:拷贝数据的长度

效果实现:将数组a的所有数据拷贝到数组b的最后面
实现步骤:1.将b数组扩容,扩大的长度为a数组的长度
                  2.使用System.arraycopy();方法将数组a拷贝到数组b的最后
代码如下:

public static void main(String[] args) {
		//定义初始数组
		int[] b = {1,2,3,4,5,6,7,8};
		System.out.println("目标数组:"+Arrays.toString(b));
		//定义需要拷贝的数组
		int[] a = {9,10};
		System.out.println("拷贝数组:"+Arrays.toString(a));
		//先将b数组扩容,扩容长度为需要拷贝数据的长度
		b = Arrays.copyOf(b, b.length+a.length);
		/**拷贝数据System.arraycopy(
		 * 拷贝数据所在的数组, (本次需要拷贝的数据为数组a中的数据)
		 * 拷贝数据在数组中的起始位置, (本次需要拷贝的数据是数组a的所有数据,所以拷贝数据的起始位置为0)
		 * 拷贝到的数组, (本次拷贝的目标数组是数组b)
		 * 拷贝数据在目标数组中的起始位置, (本次拷贝的数据要放在数组b的最后面,但是因为之前已经给数组b扩容了,所以在填写拷贝数据的起始位置时,要用数组b的长度减去扩容的长度)
		 * 拷贝数据的长度 (数组a的长度)
		 * );
		 * */
		System.arraycopy(a, 0, b, b.length-a.length, a.length);
		System.out.println("拷贝后的数组:"+Arrays.toString(b));
	}

输出结果:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值