Java数组拷贝的五种方法(浅拷贝)

数组的拷贝分为浅拷贝深拷贝,浅拷贝指的是在拷贝时,如果是引用类型如对象,只是拷贝数组的内存地址,而非数组的实际值。因此,拷贝后修改数组中的值,原数组的值也会随之改变,因为它们指向的是同一个内存地址。

而深拷贝实际上是在内存中开辟一个新的空间,拷贝数组中的每一个值。在改变拷贝数组中的值时,不会影响原始数组中的值,因为原始数组和拷贝数组分别指向两个不同的内存地址。

在Java中,想要实现对数组的浅拷贝有以下五种方法:

  1. for循环拷贝

int[] arr = {1,2,3,4,5,6};
int[] arr1 = new int[arr.length];
for(int i = 0; i < arr.length; i++) {
    arr1[i] = arr[i];
}

2. .clone拷贝

int[] arr = {1,2,3,4,5,6};
int[] arr1 = arr.clone();

直接拷贝成一个与arr相同长度,相同元素的新数组arr1。

3.System.arraycopy拷贝

int[] arr = {1,2,3,4,5,6};
int[] arr1 = new int[arr.length];
System.arraycopy(arr, 0, arr1, 0, arr.length);

该方法位于 java.lang.System 类中,语法格式如下:

System.arraycopy(dataType[] srcArray,int srcIndex, dataType[] destArray,int destIndex,int length)

dataType[] srcArray:要拷贝的数组

int srcIndex:原始数组拷贝起始位

dataType[] destArray:拷贝的新数组

int destIndex:新数组起始位

int length:要拷贝的数组长度

4.Arrays.copyOf拷贝

int[] arr = {1,2,3,4,5,6};
int[] arr1 = Arrays.copyOf(arr, arr.length);

使用Arrays类的copyOf( )方法,语法格式如下:Arrays.copyOf (dataType[] srcArray,int length);

其中,dataType[] srcArray其实就是我们需要拷贝的数组,int length是要拷贝的数组长度

如果新数组length小于旧数组length,那么就只会拷贝到第length个元素,如果新length大于旧length,那么多出来的元素就会是默认值

5.Arrays.copyOfRange拷贝

int[] arr = {1,2,3,4,5,6};
int[] arr1 = Arrays.copyOfRange(arr, 0, 6);

这是Arrays的另一种拷贝方法,可以用来拷贝指定的数组范围。书写格式为:

Arrays.copyOfRange(dataType[] srcArray,int startIndex,int endIndex)

dataType[] srcArray是我们要拷贝的数组

int startIndex是我们要拷贝的起始索引

int endIndex 是我们要拷贝的终止索引

但是需要注意的是,新的数组中不包含终止索引对应的元素,简而言之就是,如果起始索引写0,终止索引写6,那么将会拷贝数组下标0-5的元素。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值