使用 System.arraycopy(...) 比使用 for 循环来复制数组更好吗?
2022-08-31 10:52:04
我想创建一个新的对象数组,将两个较小的数组放在一起。
它们不能为 null,但大小可能为 0。
我无法在这两种方法之间进行选择:它们是等效的还是更有效的(例如system.arraycopy()复制整个块)?
MyObject[] things = new MyObject[publicThings.length+privateThings.length];
System.arraycopy(publicThings, 0, things, 0, publicThings.length);
System.arraycopy(privateThings, 0, things, publicThings.length, privateThings.length);
或
MyObject[] things = new MyObject[publicThings.length+privateThings.length];
for (int i = 0; i < things.length; i++) {
if (i<publicThings.length){
things[i] = publicThings[i]
} else {
things[i] = privateThings[i-publicThings.length]
}
}
唯一的区别是代码的外观吗?
编辑:感谢您的链接问题,但他们似乎有一个未解决的讨论:
如果:byte[],Object[],char[],它真的更快吗?在所有其他情况下,都会执行类型检查,这将是我的情况,因此是等效的...不?it is not for native types
在另一个链接的问题上,他们说,对于大小>24 system.arraycopy()获胜,对于小于10,手动循环更好...the size matters a lot
现在我真的很困惑。