请问怎样使用算法实现API中的arraycopy方法啊要求使用int型数据就行了,先提前谢谢各位啦!!!

解决方案 »

  1.   

    System.arraycopy()方法是native的,也就是说是用本地相关的代码实现的,比如C++。
    用C++的实现并不是简单的分配一个内存空间,然后拷贝元素。还要验证参数的有效性,类型验证,转换,将C++中的数组类型转成Java中的数组对象,添加对象头,考虑GC点,GC点处的oop是否采用压缩的处理也是不一样的等...
    总之,就是很复杂。
    你有兴趣可以下载OpenJDK的代码来研究研究。
    点这里下载OpenJDK 7源码
    点这里下载OpenJDK 8源码
    OpenJDK和Sun/Oracle的JDK几乎是一样的
    最简单的一个实现你可以用for循环:
    // 只是个伪代码:具体你还要做类型转换,将Object转成对应的数组类型,做些简单的类型检查
    // 如果src中的元素类型和dest的类型不一样,要跑出异常
    // 如果src或者dest的长度不够长,也要抛出异常
    for(int i = srcPos, i < length; i++) {
         dest[destPos++] = srcPos[i];
    }
      

  2.   

    这是一篇arraycopy源码解读的文章,有兴趣的话可以看看