Java数组拷贝的四种方法

数组的拷贝
数组的拷贝共有4种方法:
for循环 clone() System.arraycopy() Arrays.copyof()
1:for循环:

--拷贝数值类型:
int[] array1 = {1,2,3};
 int[] array2 = new int[3]; 
for (int i = 0; i < array1.length; i++) {
 array2[i] = array1[i]; 
}
 System.out.println("拷贝数值类型:");
 System.out.println(Arrays.toString(array1)); 
System.out.println(Arrays.toString(array2));
 System.out.println("--------------修改后--------------------");
        array2[0] = 6;
        System.out.println(Arrays.toString(array1));
        System.out.println(Arrays.toString(array2));
--拷贝引用
public class Arraycopy {
    public static void main(String[] args) {
        TestArray[] arrays1 = new TestArray[4];
        arrays1[0] = new TestArray(1);
        arrays1[1] = new TestArray(2);
        TestArray[] arrays2 = new TestArray[2];
        for (int i = 0; i < arrays.length; i++) {
            arrays2[i] = arrays1[i];
        }
        System.out.println("拷贝引用类型:");
        show(arrays1);
        show(arrays2);
        System.out.println("--------------修改后--------------");
        arrays2[1].setData(3);
        show(arrays1);
        show(arrays2);
   }
    public static void show(TestArray[] arrays) {
        for (int i = 0; i < arrays.length; i++) {
            System.out.print(arrays1[i].getData() + " ");
        }
        System.out.println();
    }
}
class TestArray {
    private int data;

    public TestArray(int data) {
        this.data = data;
    }

    public int getData() {
        return data;
    }

    public void setData(int data) {
        this.data = data;
    }
}

2:clone()

--拷贝数值类型:
int[] array1 = {1,2,3,4};
        int[] array2 = new int[4];
        array2 = array1.clone();
        System.out.println("拷贝数值类型:");
        System.out.println(Arrays.toString(array1));
        System.out.println(Arrays.toString(array2));
        System.out.println("--------------修改后--------------------");
        array2[0] = 0;
        System.out.println(Arrays.toString(array1));
        System.out.println(Arrays.toString(array2));
--拷贝引用
TestArray[] arrays1 = new TestArray[4];
        arrays1[0] = new TestArray(1);
        arrays1[1] = new TestArray(2);
        arrays1[2] = new TestArray(3);
        arrays1[3] = new TestArray(4);
        TestArray[] arrays2 = new TestArray[4];
        arrays2 = arrays.clone();
        System.out.println("拷贝引用类型:");
        show(arrays);
        show(arrays2);
        System.out.println("--------------修改后---------------");
        arrays2[0].setData(0);
        show(arrays1);
        show(arrays2);

3:System.arraycopy()

--拷贝数值类型
	 int[] array1 = {1,2,3,4,5};
        int[] array2 = new int[5];
        System.arraycopy(array1,0,array2,0,array1.length);
        System.out.println("拷贝数值类型:");
        System.out.println(Arrays.toString(array1));
        System.out.println(Arrays.toString(array2));
        System.out.println("--------------修改后--------------------");
        array2[0] = 0;
        System.out.println(Arrays.toString(array1));
        System.out.println(Arrays.toString(array2));
--拷贝引用
         TestArray[] arrays2 = new TestArray[arrays.length];
 System.arraycopy(arrays,0,arrays2,0,arrays.length);

4.Arrays.copyof():

--拷贝数值类型
       int[] array1 = {1,2,3,4,5,6};
        int[] array2 = new int[6];
        array2 = Arrays.copyOf(array1,array1.length);
--拷贝引用
TestArray[] arrays2 = new TestArray[4];
        arrays2 = Arrays.copyOf(arrays1,arrays1.length);

二维数组的拷贝也是相同的方法,只要在每种方式的拷贝前加for循环(for (int i = 0; i < arrays.length; i++) )即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值