3 回答

TA貢獻(xiàn)1843條經(jīng)驗 獲得超7個贊
您的代碼中的問題在于,它正在創(chuàng)建許多重的String對象,復(fù)制它們的內(nèi)容并對其執(zhí)行操作。相反,應(yīng)該使用StringBuilder以避免String在每個追加上創(chuàng)建新對象,并避免復(fù)制char數(shù)組。您的案例的實現(xiàn)將如下所示:
BufferedReader r = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder total = new StringBuilder();
for (String line; (line = r.readLine()) != null; ) {
total.append(line).append('\n');
}
現(xiàn)在,您total無需將其轉(zhuǎn)換為即可使用String,但是如果您需要將結(jié)果作為String,只需添加:
字符串結(jié)果= total.toString();
我會盡力解釋一下...
a += b(或a = a + b),其中a和b都是字符串,副本的內(nèi)容都 a 和 b一個新的對象(注意,你還復(fù)制a,它包含累積 String),和你正在做的每一次迭代的拷貝。
a.append(b),其中a是StringBuilder,直接將b內(nèi)容附加到a,因此您不必在每次迭代時都復(fù)制累積的字符串。
- 3 回答
- 0 關(guān)注
- 625 瀏覽
添加回答
舉報