java复制数组方法
2014-05-26 10:52
393 查看
java 可以使用 A=B 给基本数据值传递,他们指向的是同一个数组空间,如果其中一个改变了
另一个也就会要改变,所以就有了复制数组的,让两个数组分别私有自己的空间,改变不会
引起其他的改变:
有三种方法:
1、for循环,将每个数组的元素复制,效率比较低
2、使用clone()方法,得到的是数组的每个值,不再是引用,不能复制指定元素
3、使用System.arraycopy(src, srcPos, dest, destPos, length)方法,推荐使用
int [] src = {1,2,3,4};
int [] dest;
其中clone()方法是最简单,最高效的方法
clone()也有深克隆和浅克隆:
浅克隆:
public class Clone implements Cloneable{
private int a;
@Override
protected Object clone() throws CloneNotSupportedException {
// TODO Auto-generated method stub
Clone cloneClass = null;
cloneClass = (Clone)super.clone();
return cloneClass;
}
}
深克隆:
public class Clone implements Cloneable{
private int [] a;
@Override
protected Object clone() throws CloneNotSupportedException {
// TODO Auto-generated method stub
Clone cloneClass = null;
cloneClass = (Clone)super.clone();
cloneClass.a = (int [])a.clone();
return cloneClass;
}
}
当类中含有引用对象时,不只是基本的数据类型,就需要深克隆。
dest = (int [])src.clone();
System.arraycopy(src, srcPos, dest, destPos, length)
函数原型:
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length );
src:源数组; srcPos:源数组要复制的起始位置
dest:目的数组; destPos:目的数组放置的起始位置
length:复制的长度
另一个也就会要改变,所以就有了复制数组的,让两个数组分别私有自己的空间,改变不会
引起其他的改变:
有三种方法:
1、for循环,将每个数组的元素复制,效率比较低
2、使用clone()方法,得到的是数组的每个值,不再是引用,不能复制指定元素
3、使用System.arraycopy(src, srcPos, dest, destPos, length)方法,推荐使用
int [] src = {1,2,3,4};
int [] dest;
其中clone()方法是最简单,最高效的方法
clone()也有深克隆和浅克隆:
浅克隆:
public class Clone implements Cloneable{
private int a;
@Override
protected Object clone() throws CloneNotSupportedException {
// TODO Auto-generated method stub
Clone cloneClass = null;
cloneClass = (Clone)super.clone();
return cloneClass;
}
}
深克隆:
public class Clone implements Cloneable{
private int [] a;
@Override
protected Object clone() throws CloneNotSupportedException {
// TODO Auto-generated method stub
Clone cloneClass = null;
cloneClass = (Clone)super.clone();
cloneClass.a = (int [])a.clone();
return cloneClass;
}
}
当类中含有引用对象时,不只是基本的数据类型,就需要深克隆。
dest = (int [])src.clone();
System.arraycopy(src, srcPos, dest, destPos, length)
函数原型:
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length );
src:源数组; srcPos:源数组要复制的起始位置
dest:目的数组; destPos:目的数组放置的起始位置
length:复制的长度
相关文章推荐
- 自定义方法copy数组 和 Java类库对数组复制的支持
- 自定义方法copy数组 和 Java类库对数组复制的支持
- Java语言的几种数组复制方法
- Java中数组复制的四种方法
- Java中数组复制的4种方法
- java 数组复制的方法
- java语言复制数组的四种方法
- Java中数组复制的几种方法
- java语言复制数组的四种方法
- Java中数组复制的几种方法
- Java数组复制的方法和System.arraycopy
- java中复制数组的方法
- java中几种复制数组的方法比较
- java语言复制数组的四种方法
- java中复制数组的方法
- JAVA中复制数组的方法
- JAVA中复制数组的方法
- Java中数组复制的几种方法
- java 复制数组的方法总结
- JAVA中数组复制的几种方法