java數組克隆(clone)的意義

在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

所以我們通過上面的兩個案例可以發現 對一個數組克隆之後,產生的才是一個新數字 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值