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循環方法:

  代碼靈活,但效率低。spa

2.System.arraycopy()方法:

  經過源碼能夠看到,其爲native方法,即原生態方法。天然效率更高。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()。blog

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;
相關文章
相關標籤/搜索