「java数组内容拷贝」java数组拷贝的三种方法

博主:adminadmin 2023-01-18 13:51:08 357

本篇文章给大家谈谈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数组拷贝的三种方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。