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循环逐一复制方法
这个就不多讲了,顺带写在这,能用前两种就用前两种吧。
相关文章推荐
- 【java】为数组所有元素赋相同的值 以及 数组之间的复制
- java10:复制数组
- 《Java 编程技巧1001条》 第400条: 使用数组复制
- java数组复制
- java入门第八天 数组的复制扩容(截取)
- java语言复制数组的四种方法
- [java]数组复制小结 for 、clone、 System.arraycopy
- JAVA复制数组和重置数组大小
- Java中的数组复制(clone与arraycopy)代码详解
- java缓冲字节流的复制数据,数据以数组读取、写入,效率更高
- Java对数组的复制
- java---数组复制
- java 数组复制:System.arrayCopy 深入解析
- [Java] arraycopy 数组复制
- java学习4--Java 的常用包与数组的复制与排序
- java中数组复制函数详解
- java和C++中数组的初始化和复制
- Java中数组的复制
- java 数组复制的方法
- java 复制数组