java之System.arraycopy()

来源:互联网 发布:网络培训挂机 编辑:程序博客网 时间:2024/05/21 23:33

原文address:
http://blog.csdn.net/e421083458/article/details/8839242

import java.util.Arrays;public class LessionSystemArraycopy {    public static void main(String[] args)     {        int[] ids={1,2,3,4,5};        System.out.println(Arrays.toString(ids));        //测试自我复制 把从索引0开始的两个数字复制到索引为3的位置上        System.arraycopy(ids, 0, ids, 3, 2);        System.out.println(Arrays.toString(ids));        //测试复制到别的数组上 将数据索引1开始的三个数据复制到目标索引为0的位置上        int[] ids2=new int[6];        System.arraycopy(ids, 1, ids2, 0, 3);        System.out.println(Arrays.toString(ids2));        /*         * 此功能要求         * 源地址起始位置+长度 不能超过末尾         * 目标地址起始位置+长度 不能超过末尾         * 且所有参数不能为负数         */        try         {            System.arraycopy(ids, 0, ids2, 0, ids.length+1);        }        catch (Exception e)         {            //发生越界异常,数据不会发生改变            System.out.println("拷贝发生异常:数据越界");        }        System.out.println(Arrays.toString(ids2));        //如果是类型转换的问题        Object[] o1={1,2,3,4.5,6.7};        Integer[] o2=new Integer[5];        System.out.println(Arrays.toString(o2));        try         {            System.arraycopy(o1, 0, o2, 0, o1.length);        }        catch (Exception e)         {            //发生存储转换,部分成功的数据会被复制过去            System.err.println("拷贝发生异常,数据转换错误,无法存储,");        }        System.out.println(Arrays.toString(o2));    }}

结果如下:

[1, 2, 3, 4, 5][1, 2, 3, 1, 2][2, 3, 1, 0, 0, 0]拷贝发生异常:数据越界[2, 3, 1, 0, 0, 0][null, null, null, null, null][1, 2, 3, null, null]拷贝发生异常,数据转换错误,无法存储,
原创粉丝点击