java复制数组函数_关于Java中的数组复制函数System.arraycopy()

System.arraycopy()是Java系统提供的用于数组复制的函数。了解该函数前,先了解以下概念。

1、Java中的深复制和浅复制:

深复制:可以复制对象的内容和引用。例如:值拷贝。

浅复制:仅复制对象的引用。例如:对象拷贝(拷贝的是地址)。

2、函数原型:

public static native void arraycopy(Object src, intsrcPos,

Object dst,int dstPos, intlength);

src:原数组对象

srcPos:copy的起始位置

dst:目标数组对象

dstPos:copy到目标的起始位置

length:copy的长度

arraycopy()是System提供一个native静态方法,用于数组之间的复制。根据数据中数据类型的不同进行不同的处理,分为值拷贝(基本类型)和对象拷贝(普通类型,即对象类型)

该方法针对数据类型为基本类型的一维数组进行的是深复制;而二维数组或数据为引用类型的一维数据来说,进行的是浅复制。【因二维数组的元素类型是数组类型,而数组类型也是引用类型】

由于上述方法是在JVM中直接执行的,因此其比for循环和clone更加高效。

3、Java中复制数组的几种方法:

(1)for遍历

(2)数组clone():

int[]a = new int[]{1,2,3};int[]b = a.clone();

(3)System.arraycopy()

(4)Arrays.copyof():源码中,实际最终调用的还是System.arraycopy()。

4、补充:

若自定义一个类,想调用Object的super.clone()方法,则该类必须实现Cloneable接口。

//Object.java源码如下:

protected Object clone() throwsCloneNotSupportedException {if (!(this instanceof Cloneable)) { //非Cloneable实例,抛出异常

throw new CloneNotSupportedException("Class " + getClass().getName() +

" doesn't implement Cloneable");

}return internalClone(); //native方法

}private native Object internalClone();

5、Java设计模式中的"原型模式"会用到上述clone()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值