我想创建一个新的对象数组,将两个较小的数组放在一起。
它们不能为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]
}
}
唯一的区别是代码的外观吗?
编辑:感谢链接的问题,但他们似乎有一个尚未解决的讨论:
是否真的更快it is not for native types:byte [],Object [],char []?在所有其他情况下,都将执行类型检查,这将是我的情况,因此是等效的...不?
在另一个链接的问题上,他们说the size matters a lot,对于大小大于24的system.arraycopy()胜出,对于小于10的情况,手动for循环更好。
现在我真的很困惑。



arraycopy()是一个本地电话,这肯定更快。