2012-03-10 127 views

回答

1

約翰·斯喬貝格的解釋是好的:

「這是如何使用這將決定實踐的String。」

如果30萬字,使你的String對象不駐留在用雙引號(」「),例如Java源文件位於外部文件中,那麼您可以使用不同的技術按塊或整體獲取字符串內容塊。看看這個例子:

FileInputStream fis = new FileInputStream("yourFile.txt"); 
BufferedInputStream bis = new BufferedInputStream(fis); 
byte [] buffer = new byte [ 8 ]; 
int bytesRead = 0; 
String chunk = ""; 

while ((bytesRead = bis.read(buffer)) != -1) 
    chunk = new String(buffer, 0, bytesRead); 

假設你處理可能出現的異常,在上面的代碼中你會得到你每次進入while循環時間的大小8個字節的字符串。因此,通過修改此代碼中的8字節數組大小,您可以更改塊大小,並在其他地方使用塊,打印它們等。

在您的示例中,您說您的字符串包含大約300000個字符。因此,將字節數組buffer的大小設置爲4 x 300,000 = 1,200,000將使您獲得包含所有字符的單個字符串塊。

1

Java表示使用UTF-16編碼的字符串,因此在最壞的情況下,每個字符爲4字節。這給你一個粗略的4*300000/1024/1024 ~ 1.14MB字符串,這本身並不壞。

這就是你如何使用確定實踐的字符串。

相關問題