首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中有没有等同于memcpy()的东西?

在Java中有没有等同于memcpy()的东西?
EN

Stack Overflow用户
提问于 2010-07-25 20:21:34
回答 7查看 106.7K关注 0票数 89

我有一个byte[],想把它复制到另一个byte[]中。也许我在这里展示了我的简单的“C”背景,但是在Java中有没有与字节数组上的memcpy()等价的方法呢?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-07-25 20:25:13

您可以尝试System.arraycopy或使用Arrays类中的数组函数,如java.util.Arrays.copyOf。这两者都应该在幕后给你带来原生的性能。

Arrays.copyOf可能对可读性有利,但它只是在Java1.6中引入的。

代码语言:javascript
复制
 byte[] src = {1, 2, 3, 4};
 byte[] dst = Arrays.copyOf(src, src.length);
 System.out.println(Arrays.toString(dst));
票数 89
EN

Stack Overflow用户

发布于 2010-07-25 20:28:37

使用System.arraycopy()

代码语言:javascript
复制
System.arraycopy(sourceArray, 
                 sourceStartIndex,
                 targetArray,
                 targetStartIndex,
                 length);

例如,

代码语言:javascript
复制
String[] source = { "alpha", "beta", "gamma" };
String[] target = new String[source.length];
System.arraycopy(source, 0, target, 0, source.length);

或者使用Arrays.copyOf()

例如,

代码语言:javascript
复制
target = Arrays.copyOf(source, length);

java.util.Arrays.copyOf(byte[] source, int length)是在JDK1.6中添加的。

copyOf()方法使用System.arrayCopy()复制数组,但比clone()更灵活,因为您可以复制数组的各个部分。

票数 110
EN

Stack Overflow用户

发布于 2010-07-25 20:25:48

您可以使用System.arrayCopy。它将元素从源数组复制到目标数组。Sun实现使用手工优化的汇编程序,因此速度很快。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3329163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档