java System类的arraycopy方法

System.arraycopy()方法:见名知意,就是数组的复制方法。

以下有些部分是网上搜的大神们的内容,之所以重新写一遍只是为了增加自己的印象,绝无抄袭之意!!!!!!!!!!

源码声明如下:

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
参数解释:
   Object src : 原数组
    int srcPos : 从元数据的起始位置开始
  Object dest : 目标数组
  int destPos : 目标数组的开始起始位置
  int length  : 要copy的数组的长度

例子:

我们有一个数组数据 byte[]  srcBytes = new byte[]{2,4,0,0,0,0,0,10,15,50};  // 源数组

                                    byte[] destBytes = new byte[5]; // 目标数组

我们使用System.arraycopy进行转换(copy)

System.arrayCopy(srcBytes,0,destBytes ,0,5)
上面这段代码就是 : 创建一个一维空数组,数组的总长度为 12位,然后将srcBytes源数组中 从0位 到 第5位之间的数值 copy 到 destBytes目标数组中,在目标数组的第0位开始放置.
那么这行代码的运行效果应该是 2,4,0,0,0,

总结:从上述大神的解释不难看出,就是在原数组中的某个下标(例子中是0)开始取值,在目标数组的某个位置开始位置(例子中是0),取了多少位(例子中是5)进行一次复制,等同于复制+赋值。

我写了一个小测试:

public class ArrayCopy {
	public static void main(String[] args) {
		byte[] src=new byte[]{1,2,3,4,5,6,7,8,9,0};
		byte[] dest1=new byte[5];
		byte[] dest2=new byte[5];
		byte[] dest3=new byte[5];
		System.arraycopy(src,0,dest1,0,5);
		/**System.arraycopy(src,0,dest2,1,5);//下标越界异常 java.lang.ArrayIndexOutOfBoundsException
		  *(src,0,dest2,1,4)中的1和4是dest目标数组的起始位置和存储量
		  * 由于目标数组定义长度为5,所以从下标为1时开始存,只能存4个元素,1之前的默认为0因此
		  *在上一个打印中(src,0,dest2,1,5)中1,5就会报错下标越界
		  **/
		System.arraycopy(src,0,dest2,1,4);
		//这一行就是从原数组下标为2的位置开始取值
		System.arraycopy(src,2,dest3,1,4);
		System.out.println("dest1 =="+Arrays.toString(dest1));
		System.out.println("dest2 =="+Arrays.toString(dest2));
		System.out.println("dest3 =="+Arrays.toString(dest3));
	}
}

打印结果是:

应该可以很清楚地明白这个System.arraycopy()方法。

相关博客:

https://www.cnblogs.com/runwulingsheng/p/5106159.html

https://blog.csdn.net/qq_32440951/article/details/78357325

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值