Tag: arraycopy

java.lang.System.arraycopy()是否使用浅拷贝?

System.arraycopy()是浅拷贝方法。 对于基本类型的数组,它会将值从一个数组复制到另一个数组: int[] a = new int[]{1,2}; int[] b = new int[2]; System.arraycopy(a, 0, b, 0, 2); b现在是{1,2}。 a的变化不会影响b 。 对于非基本类型的数组,它会将对象的引用从一个数组复制到另一个数组: MyObject[] a = new MyObject[] { new MyObject(1), new MyObject(2)}; MyObject[] b = new MyObject[2]; System.arraycopy(a, 0, b, 0, 2); b将包含new MyObject(1) , new MyObject(2)的引用。 但是,如果a中的new MyObject(1)有任何更改,它也会影响b 。 以上陈述是否正确?

从一个arrays复制到另一个arrays的最佳方式

当我运行以下代码时,没有任何东西被复制 – 我做错了什么? 另外,这是将数据从一个数组复制到另一个数组的最佳/最有效的方法吗? public class A { public static void main(String args[]) { int a[] = { 1, 2, 3, 4, 5, 6 }; int b[] = new int[a.length]; for (int i = 0; i < a.length; i++) { a[i] = b[i]; } } }

System.arrayCopy很慢

我一直在尝试测量System.arrayCopy与Arrays.copyOf的性能,以便正确选择其中一个。 仅仅为了基准测试我也添加了手动副本,结果让我感到惊讶。 显然我错过了一些非常重要的东西,请你,告诉我,它是什么? 实现如下(参见前4种方法)。 public class ArrayCopy { public static int[] createArray( int size ) { int[] array = new int[size]; Random r = new Random(); for ( int i = 0; i < size; i++ ) { array[i] = r.nextInt(); } return array; } public static int[] copyByArraysCopyOf( int[] array, int size ) { […]

将byte 附加到另一个byte 的末尾

我有两个byte[]数组,长度未知,我只想将一个附加到另一个的末尾,即: byte[] ciphertext = blah; byte[] mac = blah; byte[] out = ciphertext + mac; 我已经尝试使用arraycopy()但似乎无法让它工作。

System.arrayCopy()复制对象或对象的引用?

我有一个最终的类NameAndValue 。 我使用System.arrayCopy()复制了一个NameAndValue对象数组,当我在复制的数组中更改了NameAndValue对象时,它会反映在原始数组中。 public final class NameAndValue { public String name; public String value; public NameAndValue() { } public NameAndValue(String name,String value) { this.name = name; this.value = value; } } public class Main { public static void main(String[] args) { NameAndValue[] nv = new NameAndValue[4]; nv[0] = new NameAndValue(“A”, “1”); nv[1] = new NameAndValue(“B”, […]