日期:2014-05-20  浏览次数:20626 次

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

------解决方案--------------------
你可以看它的源代码啊
------解决方案--------------------
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];
}

------解决方案--------------------