Arrays.copyOf和System. arraycopy方法的使用规则
一、规则
1.Arrays.copyOf()方法
/**
* Arrays.copy(int[] original, int newLength)
* original:源数组名(被拷贝的数组名)
* newLength:拷贝的长度(当长度超过源数组长度时,默认补充元素0)
*/
2.System.arraycopy()方法
/**
System. arraycopy(Object src, int srcPos, Object dest,int destPos,int length)
// src:源数组名(被拷贝的数组名)
// srcPos:源数组被拷贝的起始索引
// dest:目标数组名(拷贝的数组名)
// destPos:目标数组拷贝的起始索引
// length:拷贝的长度
*/
二、示例
1.Arrays.copyOf()方法
newLength参数的三种情况(小于/等于/大于):
//第一种情况:拷贝的长度小于源数组长度
brr = Arrays.copyOf(arr, 2);
//对拷贝后的数组进行打印
System.out.println("brr:" + Arrays.toString(brr));
//第二种情况:拷贝的长度等于源数组长度
// brr = Arrays.copyOf(arr, arr.length);
// //对拷贝后的数组进行打印
// System.out.println("brr:" + Arrays.toString(brr));
//第三种情况:拷贝的长度超过源数组长度,默认补充元素0
// brr = Arrays.copyOf(arr, arr.length + 2);
// //对拷贝后的数组进行打印
// System.out.println("brr:" + Arrays.toString(brr));
小于:
等于:
大于:
2.System.arraycopy()方法
//方式三:System. arraycopy(Object src, int srcPos, Object dest,int destPos,int length)// src:源数组名(被拷贝的数组名)
// srcPos:源数组被拷贝的起始索引
// dest:目标数组名(拷贝的数组名)
// destPos:目标数组拷贝的起始索引
// length:拷贝的长度
// System.arraycopy (arr, 0, brr, 0, arr. length) ;
// System.out. println("brr:"+Arrays.toString(brr));
//部分拷贝
System. arraycopy(arr, 1, brr, 0, 2);
System.out.println("arr源数组:"+Arrays.toString(arr));
System.out.println("brr目标数组:"+Arrays.toString(brr));
Print:
两种方法的整体代码
package Day04.study;
import java.util.Arrays;
public class ArraysDemo1 {
public static void main(String[] args) {
//定义一个整形数组
int[] arr = {10, 25, 3, 45, 12};
int[] brr = new int[arr.length];
//需求:将数组arr中的元素拷贝给数组brr
//方式一:用for循环进行元素的拷贝
// for (int i= 0; i< arr. length; i++){
// brr[i] = arr[i];
// }
// for (int i : brr){
// System. out. println(i);
// }
//方法二:使用Arrays.copyOf()方法实现元素的拷贝
/**
* Arrays.copy(int[] original, int newLength)
* original:源数组名(被拷贝的数组名)
* newLength:拷贝的长度
*/
//第一种情况:拷贝的长度小于源数组长度
// brr = Arrays.copyOf(arr, 2);
// //对拷贝后的数组进行打印
// System.out.println("brr:" + Arrays.toString(brr));
//第二种情况:拷贝的长度等于源数组长度
// brr = Arrays.copyOf(arr, arr.length);
// //对拷贝后的数组进行打印
// System.out.println("brr:" + Arrays.toString(brr));
//第三种情况:拷贝的长度超过源数组长度,默认补充元素0
// brr = Arrays.copyOf(arr, arr.length + 2);
// //对拷贝后的数组进行打印
// System.out.println("brr:" + Arrays.toString(brr));
//for (int i :brr){
// System. out. println(i);
//}
//方式三:System. arraycopy(Object src, int srcPos, Object dest,int destPos,int length)// src:源数组名(被拷贝的数组名)
// srcPos:源数组被拷贝的起始索引
// dest:目标数组名(拷贝的数组名)
// destPos:目标数组拷贝的起始索引
// length:拷贝的长度
// System.arraycopy (arr, 0, brr, 0, arr. length) ;
// System.out. println("brr:"+Arrays.toString(brr));
//部分拷贝
System. arraycopy(arr, 1, brr, 0, 2);
System.out.println("arr源数组:"+Arrays.toString(arr));
System.out.println("brr目标数组:"+Arrays.toString(brr));
}
}