我想创建一个新的对象数组将两个较小的数组放在一起。
它们不能为空,但大小可能为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 []真的会更快吗?在所有其他情况下,执行类型检查,这将是我的情况,因此将等效... 不是吗?
在另一个相关的问题上,他们说,对于大小 > 24 system. arraycopy () ,the size matters a lot胜出,对于小于10,手动循环更好..。
现在我真的很困惑。