您的位置:首页 > 编程语言 > Java开发

Java数组的复制

2018-02-26 14:10 357 查看

前言

Java中一维数组的复制有两种方法,分别是数组引用的复制与数组的复制。在开发中,需要额外注意,两种方法的异同在下文中介绍。

一、数组引用的复制

数组的类型属于引用类型,即定义的数组型变量是一个数组的引用。顾名思义,数组引用的复制是指数组在复制后,共用一个地址值。先看一个例子。

int[] srcAry = { 1, 2, 3, 4, 5};
int[] cpyAry = srcAry;      //数组引用复制

//修改副本中的值,输出原数组中的所有值
cpyAry[1] = 10;
for(int v:srcAry){
System.out.printf("%d ", v);
}

System.out.println();

//修改原数组中的值,输出副本的所有值
srcAry[0] = 0;
for(int v:cpyAry){
System.out.printf("%d ", v);
}


输出结果:



所以直接通过赋值的方式,是对数组引用的复制,一旦原数组或副本中的值被修改,则原数组与副本的值都会改变。

二、数组的复制

大多数时候,我们都更希望通过复制能够得到两个值相同,但互相独立的数组。就是下面的方法了。

1)arraycopy方法

int[] srcAry = { 1, 2, 3, 4, 5};
int[] cpyAry = new int[5];
System.arraycopy(srcAry, 0, cpyAry, 0, 5);


函数原型:

void System.arraycopy(object src, int srcPos, Object dest, int destPos, int length);


参数介绍:

- src:被复制的原数组;

- srcPos:原数组中的起始位置;

- dest:目标数组;

- destPos:目标数组的起始位置;

- length:复制的数组元素数目;

2)Arrays.copyOf方法

import java.util.Arrays;    //需要引入util包中的Arrays类

int[] srcAry = { 1, 2, 3, 4, 5};

//完全复制 cpyAry = { 1, 2, 3, 4, 5}
int[] cpyAry = Arrays.copyOf(srcAry, 5);

//截取 cpyAry = { 1, 2, 3}
int[] cpyAry = Arrays.copyOf(srcAry, 3);

//扩充 cpyAry = { 1, 2, 3, 4, 5,0, 0}
int[] cpyAry = Arrays.copyOf(srcAry, 7);


函数原型:

int[] copyOf(int[] original, int newLength)


参数介绍:

- original:要复制的数组;

- newLength:要返回的副本的长度;

Arrays.copyOf方法有多个重载函数,更多可查看API文档

3)for循环逐一复制方法

这个就不多讲了,顺带写在这,能用前两种就用前两种吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数组