怎样使用算法实现API中的arraycopy方法 请问怎样使用算法实现API中的arraycopy方法啊要求使用int型数据就行了,先提前谢谢各位啦!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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];} 这是一篇arraycopy源码解读的文章,有兴趣的话可以看看 线程分析, 求教高手 如何判断当前月的第一天是星期几? 一个小程序~聊天室功能 buffer.capacity()结果问题? 写了一个图形界面,菜单都显示不出来! java新手提问:请问如何从命令行里读入一个int型数据 eclipse如何将程序生成exe文件??????????????? 为什么会出现这样的问题? Java Mail 静态构造代码块、构造代码块、构造方法的顺序问题。 Timer构造器的问题 求救!!...
用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];
}