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; }