在java中按值复制数组

hig*_*der 12 java

我试图制作一个数组的独立副本,但无法获得一个.看到我无法使用for循环将整数复制整数,因为效率原因.还有其他方法吗?这是我的代码:

int[] temp = new int[arr.length]; 
temp = arr; 
Run Code Online (Sandbox Code Playgroud)

Cha*_*kar 20

System.arraycopy()方法.喜欢,

int[] b = new int[a.length];
System.arraycopy(a, 0, b, 0, a.length);
Run Code Online (Sandbox Code Playgroud)


Joa*_*uer 13

Arrays.copyOf() 创建现有数组的新副本(可选择具有不同的长度).


Rom*_*man 5

尝试使用clone ()方法来达到此目的.我记得这是唯一一个有效Java中的Josh Bloch建议使用克隆的情况.

int[] temp = arr.clone ();
Run Code Online (Sandbox Code Playgroud)

但是arrayCopy要快得多.对3,000,000个元素的数组进行样本性能测试:

System.arrayCopy time: 8ms
     arr.clone() time: 29ms
 Arrays.copyOf() time: 49ms
 simple for-loop time: 75ms
Run Code Online (Sandbox Code Playgroud)