clone
String[] a1 = {"a1", "a2"}; String[] a2 = a1.clone(); a1[0] = "b1"; //更改a1數組中元素的值 System.out.println(Arrays.toString(a1)); //[b1, a2] System.out.println(Arrays.toString(a2)); //[a1, a2]
克隆 相比 new 更有效率。根據已知的對象,做克隆。
系統級別的native原生方法,效率高。
參數含義是:
(原數組, 原數組的開始位置, 目標數組, 目標數組的開始位置, 拷貝個數)
int[] a1 = {1, 2, 3, 4, 5}; int[] a2 = new int[10]; System.arraycopy(a1, 1, a2, 3, 3); System.out.println(Arrays.toString(a1)); // [1, 2, 3, 4, 5] System.out.println(Arrays.toString(a2)); // [0, 0, 0, 2, 3, 4, 0, 0, 0, 0]
int[] a1 = {1, 2, 3, 4, 5}; int[] a2 = Arrays.copyOf(a1, 3); System.out.println(Arrays.toString(a1)) // [1, 2, 3, 4, 5] System.out.println(Arrays.toString(a2)) // [1, 2, 3]
Arrays.copyOfRange底層其實也是用的 System.arraycopy,只不過封裝了一個方法.
參數含義:(原數組,開始位置,拷貝的個數)。
int[] a1 = {1, 2, 3, 4, 5}; int[] a2 = Arrays.copyOfRange(a1, 0, 1); System.out.println(Arrays.toString(a1)) // [1, 2, 3, 4, 5] System.out.println(Arrays.toString(a2)) // [1]
小結