Java 数组的复制

Java数组的复制

阅读列表

  1. for循环复制
  2. System.copyOf()
  3. Arrays.copyOf()

for 循环

    int a[]={0,0,0,1,2,3,0,0};
        int i=0;
    while(a[i]==0){             //找到最后一个0
        i++;
    }
    System.out.println(i);
    int j=0;
    int b[]= new int[a.length-i]; //用来储存新数组
    for(;i<a.length;i++){
        b[j]=a[i];
        System.out.print(b[j]);
        j++;
    }

for 循环复制效率低,且敲代码费力,但是能根据需要设置限制复制比较灵活。

System.copyOf()

    public static native void arraycopy(Object src,  int  srcPos,
                                         Object dest, int destPos,
                                         int length);

调用原生函数,代码简洁,能进行简单的设定,具有一定灵活性。这种复制为浅拷贝,复制的数组会随着原数组的改变而改变

Arrays.copyOf()

    public static int[] copyOf(int[] original, int newLength) {
      int[] copy = new int[newLength];
      System.arraycopy(original, 0, copy, 0,
        Math.min(original.length, newLength));
      return copy;
    }

可以看到它是调用System.arraycopy()的方法,比上者的效率显然低一些。但这种方法是深拷贝,也有用处。

https://www.cnblogs.com/zhengbin/p/5671403.html#_label1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值