2012-02-22 65 views
0

使用String.getBytes(Charset ch),分配一個新的緩衝區,實際上它返回一個byte[]。有沒有辦法避免這種情況?我想有一個可重用的字節數組,並在此緩衝區中編碼字符串。如何避免與String.getBytes(Charset ch)相關的開銷

+8

在這條路線走得太遠之前 - 您是否有確定的性能測量結果,顯示這對您而言是一個重大問題? – 2012-02-22 17:40:14

+0

我來C++,分配對我來說是邪惡 – gotch4 2012-02-22 20:14:52

+1

不成熟的優化是一個更大的邪惡,雖然... – 2012-02-22 20:15:15

回答

1

如果你像我一樣不掌握ByteBuffer,爲了補充Jon的回答,你也可以創建自己的包裝你的字節數組的OutputStream實現,並使用OutputStreamWriter將字符串寫入這個自定義OutputStream

-1

您可以使用

getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 

//Copies characters from this string into the destination character array. 

,並自行管理陣列。

+0

這不會做任何編碼 - 這是複製周圍的*字符*。 – 2012-02-22 20:15:33

+0

我認爲這已被棄用,但它寫入char [],而不是byte [],所以根本沒有編碼。 – gotch4 2012-02-22 20:16:28

+0

具有相同參數的'getBytes'已棄用。 'getChars'不是。但是,我忘記了編碼部分... – 2012-02-23 09:43:15