2013-02-08 87 views
1

JAVA为什么arrayCopy系统调用?

short size = 1234; 
    byte[] payload = {12,43, 55,123, 11, 55}; 

byte [] shortSize = ByteBuffer.allocate(2).putShort(size).array(); 
byte[] entirePayload = new byte[shortSize.length+payload.length]; 

System.arraycopy(shortSize, 0, entirePayload, 0, 2); 
System.arraycopy(payload, 0, entirePayload, 2, payload.length); 

是否有一个根本原因,这是一个Java的系统调用?

+0

仅仅因为函数驻留在System类中并不会使其成为“系统调用”。 'System'只是另一个Java类。 – 2013-02-08 20:35:53

回答

4

也许arraycopy会更适合java.util.Arrays,但该类不是在Java 1.2之前添加的,而arraycopy在Java的最开始就有。 System似乎是下一个最好的地方。

请注意,此方法在本机代码中实现以使其更快,所以它有点特别。

+0

我通常不太喜欢本地方法。 Math.sin()的速度非常慢。 – 2013-02-08 19:52:25

+1

@Legend:好的,回想一下Java 1.1,当时VM只是一个低级的字节码解释器,所有的数组访问总是被边界检查。你会很喜欢System.arrayCopy。 – Boann 2013-02-08 20:00:11

+0

@Boann +1更不用说常规Java代码无法实现的块复制操作。 – 2013-02-08 20:37:56

相关问题