zoukankan      html  css  js  c++  java
  • java 深度复制与浅复制 copyOf、arraycopy、copyOfRange

    1、copyOf

      原型:public static <T> T[] copyOf(T[] original, int newLength)

      original:原数组  newLength:要复制的长度

      Arrays.copyof()

    2、arraycopy

      原型:void arraycopy(Object src, int srcPos, Object dest, int destPos, int  length)

      src:原数组  srcPos:原数组起始位置  dest:目标数组  destPost:目标数组的起始位置  length:复制长度

      System.arraycopy()

      注意:此方法要声明一个同类型且长度足够的数组,否则会报异常

    3、copyOfRange

      原型:public static <T,U> T[] copyOfRange(U[] original, int from, int to)

      original:原数组  from:原数组的起始位置  to:终点位置(不包括)

      Arrays.copyOfRange()

     最实际的应用就是List中的remove方法就是使用了arraycopy()

    public E remove(int var1) {
            this.rangeCheck(var1);
            ++this.modCount;
            Object var2 = this.elementData(var1);
            int var3 = this.size - var1 - 1;  //判断是否移除最后一个元素
            if (var3 > 0) {
                System.arraycopy(this.elementData, var1 + 1, this.elementData, var1, var3);  //将要移除元素后面的元素往前移
            }
    
            this.elementData[--this.size] = null;  //clear to let GC do its work
         return var2; 
    }
  • 相关阅读:
    git简单使用命令
    localStorage的用法
    CSS3 进阶
    ASP.NET应用程序与页面生命周期
    IT专业人士如何更有效的学习专业知识
    jsonp跨域原理解析
    sql注入原理
    ajax跨域调用
    aspx、ashx以及cs的关系,viewState
    Js处理json数据
  • 原文地址:https://www.cnblogs.com/Eeexiang/p/10133031.html
Copyright © 2011-2022 走看看