在java中按值复制数组

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

int[] temp = new int[arr.length]; temp = arr; 

查看System.arraycopy()方法。 喜欢,

 int[] b = new int[a.length]; System.arraycopy(a, 0, b, 0, a.length); 

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

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

 int[] temp = arr.clone (); 

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

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

查看System.arraycopy() 。 它可以复制任何类型的数组,并且是复制数组的优先(和优化)方法。

你可以使用System.arraycopy ,但我怀疑它会更有效率。 无论如何都必须复制内存,因此唯一可能的优化是一次复制更大的内存块。 但是,一次复制的内存块的大小受到处理器/系统架构的强烈限制。