文章目录
- 概述
- 方法一:运用for循环进行拷贝
- 方法二:Java内置方法进行拷贝
- 方法三:指定区间进行拷贝
 
概述
数组拷贝。
 注意:
 	public static void main(String[] args) {
        int[] array1 = {1,2,3,4};
        System.out.println(myToString(array1));
        int[] array2 = array;
        System.out.println(myToString(array2));
    }
这不叫拷贝,因为此时只有一个数组对象。
方法一:运用for循环进行拷贝
 public static void main(String[] args) {
        int[] array1 = {1,2,3,4};
        int[] array2 = new int[array1.length]; //开辟新的内存空间,存arry1.length个数据
        for (int i = 0; i < array1.length; i++) {
            array2[i] = array1[i];
        }
        System.out.println(Arrays.toString(array1));
        System.out.println(Arrays.toString(array2));
    }
//执行结果
[1, 2, 3, 4]
[1, 2, 3, 4]
方法二:Java内置方法进行拷贝
用 Array.copyOf() 方法
 其功能:
- 拷贝
- 扩容
	 public static void main(String[] args) {
        int[] array = {1,2,3,4};
        //拷贝
        int[] array1 = Arrays.copyOf(array,array.length);
        System.out.println(Arrays.toString(array));
        System.out.println(Arrays.toString(array1));
        System.out.println("=======================");
        //扩容
        int[] array2 = Arrays.copyOf(array,array.length*2);
        System.out.println(Arrays.toString(array));
        System.out.println(Arrays.toString(array2));
    }
【输出结果】
 
方法三:指定区间进行拷贝
此方法的底层源码:
public static native void arraycopy(Object src, int srcPos, Object desc, int destPos,int length);
- src:从哪里拷贝
- srcPos:从拷贝数组的哪个位置开始拷贝
- dest:拷贝到哪里
- destPos:从拷贝数组的拷贝到哪个位置
- length:拷贝多长
 	public static void main(String[] args) {
        int[] array1 = {1,2,3,4};
        int[] array2 = new int[array1.length]; //开辟新的内存空间,存arry1.length个数据
        System.arraycopy(array1,1,array2,0,array1.length-1); //从array1的0位置开始,拷贝到array2的0下标下,且拷贝的长度为array1.length-1
        System.out.println(Arrays.toString(array1));
        System.out.println(Arrays.toString(array2));
    }
//输出结果
[1, 2, 3, 4]
[2, 3, 4, 0]
【也可以缩小拷贝】
 public static void main(String[] args) {
        int[] array1 = {1,2,3,4};
        int[] array2 = Arrays.copyOf(array1,array1.length/2); 
        System.out.println(Arrays.toString(array1));
        System.out.println(Arrays.toString(array2));
    }
//输出结果
[1, 2, 3, 4]
[1, 2]



















