Java中数组复制的几种方法

来源:互联网 发布:大数据的弱点有几方面 编辑:程序博客网 时间:2024/05/16 01:53

http://www.cnblogs.com/zhengbin/p/5671403.html


+ View code
 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方法,即原生态方法。自然效率更高。

+ View code
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()。

+ View code
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类型,所以赋值时将发生强转,所以效率不如之前两种。

- Hide code

 


0 0
原创粉丝点击