数组复制的几种方法源码(JDK1.8)屌丝版

1、Arrays下的copyOf方法,这是对int[]数组的处理

public static int[] copyOf(int[] original, int newLength) { //传入原数组、以及一个新的数组长度
    int[] copy = new int[newLength];  //直接new一个新的数组对象
    System.arraycopy(original, 0, copy, 0, //这边是复制元素、从original中的下标0处开始、复制到copy中、也是从下标0开始
                     Math.min(original.length, newLength)); //复制元素的个数是,选择newLength与原数组长度的最小值
    return copy; //返回新的数组对象
}


2、System下的arraycopy,是个native方法,醉了,也是上面copyOf调用的方法嘛

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

3、Arrays下的copyOfRange方法,又醉一次

public static int[] copyOfRange(int[] original, int from, int to) { //指定拷贝一个区间
    int newLength = to - from; //嘿嘿,拿到要拷贝元素的长度
    if (newLength < 0) //如果新的长度小于0、抛出异常
        throw new IllegalArgumentException(from + " > " + to);
    int[] copy = new int[newLength]; //new一个数组对象 //嘿嘿,长度就是要拷贝元素的长度
    System.arraycopy(original, from, copy, 0, 
                     Math.min(original.length - from, newLength));
    return copy;
}

猜你喜欢

转载自blog.csdn.net/cadi2011/article/details/80269911