Java中是否有与memcpy()等效的?

2022-08-31 11:12:37

我有一个字节[],并希望将其复制到另一个字节[]中。也许我在这里展示了我简单的“C”背景,但是Java中的字节数组上是否有相当于memcpy()的上下文?


答案 1

使用 System.arraycopy()

System.arraycopy(sourceArray, 
                 sourceStartIndex,
                 targetArray,
                 targetStartIndex,
                 length);

String[] source = { "alpha", "beta", "gamma" };
String[] target = new String[source.length];
System.arraycopy(source, 0, target, 0, source.length);


或使用 Arrays.copyOf()
示例,

target = Arrays.copyOf(source, length);

java.util.Arrays.copyOf(byte[] source, int length)在 JDK 1.6 中添加。

该方法用于制作数组的副本,但比您可以制作数组各部分的副本更灵活。copyOf()System.arrayCopy()clone()


答案 2

您可以尝试 System.arraycopy 或使用 Arrays 类中的数组函数,如 。两者都应该在引擎盖下为您提供本机性能。java.util.Arrays.copyOf

Arrays.copyOf可能有利于可读性,但仅在java 1.6中引入。

 byte[] src = {1, 2, 3, 4};
 byte[] dst = Arrays.copyOf(src, src.length);
 System.out.println(Arrays.toString(dst));

推荐