「java数组内容拷贝」java数组拷贝的三种方法
本篇文章给大家谈谈java数组内容拷贝,以及java数组拷贝的三种方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
java怎么把数组复制
public class ArraysCopy{
public static void main(String[] args){
int[] arr = {1,2,3,4};
int[] arr2 = new int[arr.length];
System.arraycopy(arr,0,arr2,0,arr2.length);
System.out.println(java.util.Arrays.toString(arr2));
}
}
参数:
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
JAVA 数组拷贝
arraycopy方法只是浅层复制,就是单纯的把值赋给目标 当值为引用类型时,这毫无意义,因为复制出来的对象不能独立于原对象,当原来的引用内容改变时,复制的也改变。 当拷贝一维数组时,数组里面也必须存放非引用值(比如int,char)才有效,不然你修改也一样会影响原数组 当拷贝二维数组时,它相当于一个一维数组的每一项又存一个一维数组的首地址引用,那么单纯对二维数组使用arraycopy就没有用了,要达到目的只有把它细分到不是引用值(比如你原来是对b拷贝,现在改成对b[0],b[1]...分别拷贝),再使用这个方法。
Java中数组复制的几种方法
最简单的一种就是直接挨个把原数组的值赋给新数组 不过一般都用System.arraycopy(原数组起始复制的标号,新数组接收复制的起始标号,赋值的长度) 这个方法
例如:public class llx { public static void main(String args[]) { int a[] = {1,2,3,4,5}; int b[] = new int[10];//搞一个10位置的新数组 System.arraycopy(a[0],b[0],a.length);//从a的第一个位置开始复制;从b的第一个位置开始接收;一共接收a的总长度(a.length);;;懂了吗?这样的话 b的前5个值就被传递了,但是后5个是初始值0。 }}
java中数组复制的方法有几种
1.for循环方法:
代码灵活,但效率低。
2.System.arraycopy()方法:
通过源码可以看到,其为native方法,即原生态方法。自然效率更高。
1 public static native void arraycopy(Object src, int srcPos,
2 Object dest, int destPos,
3 int length);
3.Arrays.copyOf()方法:
同样看源码,它的实现还是基于System.arraycopy(),所以效率自然低于System.arraycpoy()。
复制代码
1 public static int[] copyOf(int[] original, int newLength) {
2 int[] copy = new int[newLength];
3 System.arraycopy(original, 0, copy, 0,
4 Math.min(original.length, newLength));
5 return copy;
6 }
复制代码
4.Object.clone()方法:
从源码来看同样也是native方法,但返回为Object类型,所以赋值时将发生强转,所以效率不如之前两种。
1 protected native Object clone() throws CloneNotSupportedException;
Java 如何拷贝数组的数据
这就是从指定的源数组复制一个数组到目的数组,复制是从指定位置开始到目标数组指定位置结束,
也就是从你的第一个数组0
index开始复制长度为3复制到目标的0开始前3位
简单说system.arraycopy(a1,0,a2,0,3);
a1是你的原数组就是要提供复制的,0是你的原数组的开始位数,
也就是a1的index,a2是目的数组,就是需要复制到的,0是a2的开始位数吗,也就是a2的index,3是复制的长度
关于java数组内容拷贝和java数组拷贝的三种方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。