java数组复制的效率

来源:互联网 发布:java传授功力表情包 编辑:程序博客网 时间:2024/05/16 15:31
AVA语言的下面几种数组复制方法中,哪个效率最高?

正确答案: B   你的答案: D (错误)

for循环逐一复制
System.arraycopy
System.copyof
使用clone方法




 A、for循环的话,很灵活,但是代码不够简洁.
    B、System.arraycopy()源码。可以看到是native方法:native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。 可以将native方法比作Java程序同C程序的接口。
public static native void arraycopy(Object src,  int  srcPos,           Object dest, int destPos,int length); 

    C、选项有误,copyOf不是System的方法,而是Arrays的方法,下面是源码,可以看到本质上是调用的arraycopy方法。,那么其效率必然是比不上 arraycopy的
1
2
3
4
5
6
publicstatic int[] copyOf(int[] original, intnewLength) {
   int[] copy = newint[newLength];
   System.arraycopy(original, 0, copy, 0,
   Math.min(original.length, newLength));
   returncopy;
}
 D。clone的话,返回的是Object【】,需要强制转换。 一般用clone效率是最差的,

        CD可以排除。那么AB怎么比较呢?
        给出一下参考的:
            http://bbs.csdn.net/topics/370151185。
               http://xuyuanshuaaa.iteye.com/blog/1046621  java的system.arraycopy()方法

具体的理由不好说。不过一致的说法和实验证明是arraycopy()效率高!!!T...T


首先:Sytem.copyOf有这个?我只知道是Arrays.copyOf

结论:
效率:System.arraycopy > clone > Arrays.copyOf > for循环

理由:
A:for循环,效率最低,随便写个程序验证一下,效率慢的不是一点.....我测试的时候比clone和System.arraycopy差了100多倍

B:System.arraycopy:原型是
public static native void arraycopy(Object src,  int  srcPos , Object dest, int destPos, int length);

C:Arrays.copyOf底层调用了上面的System.copyOf效率比上面两个低。

D:clone()的完整定义:protected native Object clone() throws CloneNotSupportedException;
高票答案说的clone()返回的是Object类型,其实是错误的,只有Object[]数组的clone()方法才返回Object类型,子类重写了父类的方法。

其实,一般情况下,前三个的效率差别几乎忽略不计,但是从Arrays.copyOf底层调用的System.arraycopy效率自然要低一些。
而clone()和arraycopy只是从实验的结果来看是arraycopy的效率高。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 到达迪拜t3 后怎么办 海藻面膜调多了怎么办 被鸡爪子抓伤了怎么办 被鸡抓伤肿了怎么办 护士电子化没有激活码怎么办 窗帘盒螺丝掉了怎么办 窗帘的环扣掉了怎么办 门式起重吊装行车脱轨怎么办 在日本丢了东西怎么办 在日本钱包丢了怎么办 被起诉后没钱还怎么办 分期付款卖车打不起车款怎么办 地铁票买多了怎么办 工伤陪护费没有发票怎么办 工伤医疗费报销单位不盖章怎么办 家里的led灯坏了怎么办 吊顶led灯坏了怎么办 客厅空了一面墙怎么办 轨道灯的轨道不够长怎么办 奔驰大灯不亮了怎么办 led顶灯不亮了怎么办 吸顶灯led灯坏了怎么办 车底盘塑料被刮怎么办 汽车门电机坏了怎么办 宁波北仑普高差三分该怎么办 上班的地方甲醛味很重怎么办 公司不给员工交社保怎么办 户口转到学校毕业了怎么办 外地户口转到北京档案怎么办 隧道防水板过紧怎么办 到国企没报到证怎么办 车子锁了油箱盖能开怎么办 单位不接受档案和户口怎么办 完税凭证弄丢了怎么办 育种玉米公本早了怎么办 网银转账打错了怎么办 转账名字打错了怎么办 普通转账名字打错了怎么办 银行账号转错了怎么办 打款信息错了怎么办 报到证过期了档案怎么办