java数组复制方法

来源:互联网 发布:淘宝卖家不参加双十一 编辑:程序博客网 时间:2024/05/18 16:15
  1. “=”,相当于将一个数组变量的引用传递给另一个数组;如果一个数组发生改变,那么引用同一数组的变量也要发生改变.
  2. 使用FOR循环,将数组的每个元素复制或者复制指定元素,不过效率差一点
  3. 使用clone方法,得到数组的值,而不是引用,不能复制指定元素,灵活性差一点
  4. 使用System.arraycopy(src, srcPos, dest, destPos, length)方法,推荐使用,效率最高


public static native void arraycopy(Object src, int srcPos, Object dest, int destPos,int length); 
src:源数组; srcPos:源数组要复制的起始位置; 
dest:目的数组; destPos:目的数组放置的起始位置; 
length:复制的长度.

因为根据System.arraycopy()源码,可以看到是native方法:native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。 可以将native方法比作Java程序同C程序的接口。

5 . copyOf(),,不是System的方法,而是Arrays的方法,下面是源码,可以看到本质上是调用的arraycopy方法。,那么其效率必然是比不上 arraycopy的.

public static int[] copyOf(int[] original, int newLength) {   int[] copy = new int[newLength];   System.arraycopy(original, 0, copy, 0,   Math.min(original.length, newLength));   return copy;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

使用方法: 
1.使用clone 
int[] src={1,3,5,6,7,8}; 
int[] dest; 
dest=(int[]) src.clone();//使用clone创建副本,注意clone要使用强制转换

2、使用System.arraycopy 
int[] src={1,3,5,6,7,8}; 
int[] dest = new int[6]; 
System.arraycopy(src, 0, dest, 0, 6);