Java中数组的赋值拷贝

本文详细介绍了Java中基本数据类型和数组在赋值时的区别。对于基本数据类型,赋值是值的拷贝,不相互影响;而对于数组,赋值是引用拷贝,导致数组变量共享同一数据空间。通过示例代码解释了如何通过`new`关键字实现数组的深拷贝,以达到修改一个副本不会影响另一个的效果。
摘要由CSDN通过智能技术生成

在Java中,基本数据类型的赋值和拷贝如下:
例如
int num = 1;
int pum = num;

pum = 3;
此时输出sum的值还是1,而pum的值则为3。

对于数组来说,该操作为引用赋值(地址拷贝)
例如:
int [] arr1 = {1,2,3};
int [] arr2 = arr1;
int [0] = 8;

此时arr1和arr2输出的都是{1,2,3}。
上面讲的基本数据类型,他们的值是存放在栈里面,作为数据的拷贝,他们之间互不影响。而数组在栈里面存放的是地址,他的数据空间在堆里面,也就是说,arr1的数据空间和arr2的数据空间是一样的,共享的,如果修改了arr2,arr1也会跟着改变。简单的画一下示意图:
在这里插入图片描述

如果让每个数组拥有独立的数据空间,那他们的值互相将不会受到影响。
int [] arr1 = {1,2,3};
int [] arr2 = new arr2[arr1.length];
int [0] = 6;
此时输出arr1还是不变{1,2,3}
而arr2的值为{1,6,3}
此时他们修改数据互不影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值