2013-02-08 53 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

相關問題