Java数组复制(拷贝)

本文详细介绍了在Java中如何正确地复制数组以避免意外修改原始数组的问题,并演示了使用System.arraycopy()方法进行有效复制的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 数组的复制

可以把一个数组的变量赋值给另外一个数组,但是两个变量引用的都是同一个内存空间,因此,这种情况下,改变一个数组的值,另一个数组变量也会改变。例如:

public class Arraycopy{
    public static void main (String [] args){
        int [] num = {4,2,3,1,9,0};
        int [] numcopy = num;            //数组复制
        numcopy [2] = 2;                 //新数组改值
        for(int i = 0;i<numcopy.length;i++)
        System.out.print(numcopy[i]+" ");
        System.out.println();
        for(int j = 0;j<num.length;j++)
        System.out.print(num[j]+" ");
    }
}

运行结果如图
这里写图片描述


如果确实需要将数组中的元素的值复制给另外一个元素,而又不想改变原数组的值,可以采用System类中的arrayCopy()方法,其格式如下:
System.arraycopy(src, srcPos, dest, destPos, length)
该方法可以将src源数组中从srcPos开始的连续length个元素复制到dest数组的从destPos开始位置,且src和dest数组指向不同的内存空间。

public class Arraycopy{
    public static void main (String [] args){
        int [] num = {4,2,3,1,9,0};
        int [] numcopy = new int [6]; 

        for(int i=0;i<num.length;i++)
        System.out.print(num[i]+" ");
        System.out.println();
        //输出数组num

        for(int j=0;j<num.length;j++)
        System.out.print(numcopy[j]+" ");
        System.out.println();
        //输出数组numcopy

        System.arraycopy(num,0,num,3,2);
        for(int i=0;i<num.length;i++)
        System.out.print(num[i]+" ");
        System.out.println();
        //自我复制,从位置0开始复制长度为2到位置3
        //并输出

        System.arraycopy(num,0,numcopy,3,2);
        for(int j=0;j<num.length;j++)
        System.out.print(numcopy[j]+" ");
        System.out.println();
        //复制到numcopy数组,从位置0开始复制长度为2到位置3
        //并输出



    }
}

运行结果如图
这里写图片描述


有错误或者不足希望大家指出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值