zoukankan      html  css  js  c++  java
  • Java中数组复制的几种方法

     1 /**
     2  * @author zhengbinMac
     3  */
     4 public class Test {
     5     public static void main(String[] args) {
     6         int[] array1 = {1,2,3,4,5};
     7         // 1.通过for循环
     8         int[] array2 = new int[5];
     9         for(int i = 0;i < array1.length;i++) {
    10             array2[i] = array1[i];
    11         }
    12         for(int i = 0;i < array2.length;i++) {
    13             System.out.print(array2[i]);
    14         }
    15         System.out.println();
    16         //2.通过System.arraycopy()
    17         int[] array3 = new int[5];
    18         System.arraycopy(array1, 0, array3, 0, 5);
    19         for (int i = 0; i < array3.length; i++) {
    20             System.out.print(array3[i]);
    21         }
    22         System.out.println();
    23         //3.通过Arrays.copyOf()
    24         int[] array4 = new int[5];
    25         array4 = Arrays.copyOf(array1, 5);
    26         for (int i = 0; i < array4.length; i++) {
    27             System.out.print(array4[i]);
    28         }
    29         System.out.println();
    30         //4.通过Object.clone()
    31         int[] array5 = new int[5];
    32         array5 = array4.clone();
    33         for (int i = 0; i < array5.length; i++) {
    34             System.out.print(array5[i]);
    35         }
    36     }
    37 }

    1.for循环方法:

      代码灵活,但效率低。

    2.System.arraycopy()方法:

      通过源码可以看到,其为native方法,即原生态方法。自然效率更高。

    1 public static native void arraycopy(Object src,  int  srcPos,
    2                                         Object dest, int destPos,
    3                                         int length);

    3.Arrays.copyOf()方法:

      同样看源码,它的实现还是基于System.arraycopy(),所以效率自然低于System.arraycpoy()。

    1 public static int[] copyOf(int[] original, int newLength) {
    2   int[] copy = new int[newLength];
    3   System.arraycopy(original, 0, copy, 0,
    4     Math.min(original.length, newLength));
    5   return copy;
    6 }

    4.Object.clone()方法:

      从源码来看同样也是native方法,但返回为Object类型,所以赋值时将发生强转,所以效率不如之前两种。

    1 protected native Object clone() throws CloneNotSupportedException;
  • 相关阅读:
    算法复习———dijkstra求次短路(poj3255)
    NOIP2017年11月9日赛前模拟
    NOIP2017赛前模拟11月6日—7日总结
    刷题总结——子串(NOIP2015)
    NOIP2017赛前考试注意事项总结
    NOIP2017赛前模拟11月4日总结:
    NOIP2017赛前模拟11月2日总结
    刷题总结——Aeroplane chess(hdu4405)
    刷题总结——Interval query(hdu4343倍增+贪心)
    刷题总结——Throw nails(hdu4393)
  • 原文地址:https://www.cnblogs.com/zhengbin/p/5671403.html
Copyright © 2011-2022 走看看