for循环逐一复制:for循环的话,很灵活,但是代码不够简洁.
System.arraycopy:System.arraycopy()源码。可以看到是native方法:native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。 可以将native方法比作Java程序同C程序的接口。(最优的)
public static native void arraycopy(Object src, int srcPos, Object dest, int destPos,int length);
System.copyof:copyOf不是System的方法,而是Arrays的方法,下面是源码,可以看到本质上是调用的arraycopy方法。,那么其效率必然是比不上 arraycopy的
1
2
3
4
5
6
|
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; } |
使用clone方法:clone的话,返回的是Object【】,需要强制转换。 一般用clone效率是最差的