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