在java中例如我們定義如下的數組:
package day04;import java.util.Arrays;
public class Test10 {
public static void main(String[] args) {
int[] arr = {100,200,300,400,500};
System.out.println(Arrays.toString(arr));
//给当前数组 取了一个别名
int[] arr2 = arr;
System.out.println(Arrays.toString(arr2));
arr2[0] = 999;
arr2[4] = 1234;
System.out.println(Arrays.toString(arr2));
System.out.println(Arrays.toString(arr));
System.out.println(arr);
System.out.println(arr2);
// //=====数组的克隆
// int[] arr3 = arr.clone();
// System.out.println(Arrays.toString(arr3));
// arr3[0] = 999;
// System.out.println(Arrays.toString(arr));
// System.out.println(Arrays.toString(arr3));
//
// System.out.println(arr);
// System.out.println(arr3);
}
}
運行結果為:
[100, 200, 300, 400, 500]
[100, 200, 300, 400, 500]
[999, 200, 300, 400, 1234]
[999, 200, 300, 400, 1234]
[I@7852e922
[I@7852e922
我們在修改了arr2 中的數據之後,緊接著輸出可arr和arr2中的數據,我們發現輸出的竟然是相同的 數組arr和arr2的地址標簽是一樣的 這説明 我們將arr賦值給arr2 的時候并沒有在内存上重新開闢地址空間,衹是給arr取了一個新的名字叫做arr2
package day04;
import java.util.Arrays;
public class Test10 {
public static void main(String[] args) {
int[] arr = {100,200,300,400,500};
//System.out.println(Arrays.toString(arr));
//给当前数组 取了一个别名
//int[] arr2 = arr;
//System.out.println(Arrays.toString(arr2));
//arr2[0] = 999;
//arr2[4] = 1234;
//System.out.println(Arrays.toString(arr2));
//System.out.println(Arrays.toString(arr));
//System.out.println(arr);
//System.out.println(arr2);
//=====数组的克隆
int[] arr3 = arr.clone();
System.out.println(Arrays.toString(arr3));
arr3[0] = 999;
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.toString(arr3));
System.out.println(arr);
System.out.println(arr3);
}
}
輸出結果為[100, 200, 300, 400, 500]
[100, 200, 300, 400, 500]
[999, 200, 300, 400, 500]
[I@7852e922
[I@4e25154f
這是我們會發現 數組arr 和arr3 在内存當中已經有了不同的地址標簽 即[I@7852e922和[I@4e25154f
所以我們通過上面的兩個案例可以發現 對一個數組克隆之後,產生的才是一個新數字