System.arraycopy()从指定源数组中复制一个数组

System类提供了一个arraycopy()方法

public static void arraycopy(Object src,
                             int srcPos,
                             Object dest,
                             int destPos,
                             int length)

    该方法用于从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。从 src 引用的源数组到 dest 引用的目标数组,数组组件的一个子序列被复制下来。被复制的组件的编号等于 length 参数。源数组中位置在 srcPos 到 srcPos+length-1 之间的组件被分别复制到目标数组中的 destPos 到 destPos+length-1 位置。
    如果参数 src 和 dest 引用相同的数组对象,则复制的执行过程就好像首先将 srcPos 到 srcPos+length-1 位置的组件复制到一个带有 length 组件的临时数组,然后再将此临时数组的内容复制到目标数组的 destPos 到 destPos+length-1 位置一样。

方法参数解释

src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。 

方法使用中抛出的异常

IndexOutOfBoundsException - 如果复制会导致对数组范围以外的数据的访问。 
ArrayStoreException - 如果因为类型不匹配而使得无法将 src 数组中的元素存储到 dest 数组中。 
NullPointerException - 如果 src 或 dest 为 null。

案例

public class SystemDemo {

    public static void main(String[] args) {
        int[] arr1 = { 1, 2, 3, 4, 5, 6, 7};  
        // 打印当前数组
        System.out.println(Arrays.toString(arr1)); 
        // 实现数组自我复制,把从索引0开始的3个数字复制到索引为4的位置上 
        System.arraycopy(arr1, 0, arr1, 4, 3);  
        System.out.println(Arrays.toString(arr1));  
        // 实现将数组复制到其他数组中,把从索引1开始的3个数据复制到目标的索引为0的位置上 
        int[] arr2 = new int[7];  
        System.arraycopy(arr1, 1, arr2, 0, 3);  
        System.out.println(Arrays.toString(arr2));
    }

}

结果:

这里写图片描述

转载于:https://my.oschina.net/u/3126720/blog/803546

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值