StringBuffer笔记
生活随笔
收集整理的這篇文章主要介紹了
StringBuffer笔记
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡要的說, String 類型和 StringBuffer 類型的主要性能區別其實在于 String 是不可變的對象
因此在每次對 String 類型進行改變的時候其實都等同于生成了一個新的 String 對象,然后將指針指向新的 String 對象,
所以經常改變內容的字符串最好不要用 String ,因為每次生成對象都會對系統性能產生影響,特別當內存中無引用對象多了以后,
JVM 的 GC 就會開始工作,那速度是一定會相當慢的。這里嘗試舉個不是很恰當的例子: String S1 = “abc”; For(int I = 0 ; I < 10000 ; I ++) // For 模擬程序的多次調用 { S1 + = “def”; S1 = “abc”; }如果是這樣的話,到這個 for 循環完畢后,如果內存中的對象沒有被 GC 清理掉的話,內存中一共有 2 萬多個了
牽扯到String里內容不斷變換的時候用StringBuffer,
String S1 = “This is only a” + “ simple” + “test”; 速度要比 StringBuffer Sb = new StringBuilder(“This is only a”).append(“ simple”).append(“ test”); 快出很多
String S2 = “This is only a”; String S3 = “ simple”; String S4 = “ test”; String S1 = S2 +S3 + S4;
速度則會慢很多
以上內容摘抄于http://blog.csdn.net/shirleyacount/article/details/39958371
因此在每次對 String 類型進行改變的時候其實都等同于生成了一個新的 String 對象,然后將指針指向新的 String 對象,
所以經常改變內容的字符串最好不要用 String ,因為每次生成對象都會對系統性能產生影響,特別當內存中無引用對象多了以后,
JVM 的 GC 就會開始工作,那速度是一定會相當慢的。這里嘗試舉個不是很恰當的例子: String S1 = “abc”; For(int I = 0 ; I < 10000 ; I ++) // For 模擬程序的多次調用 { S1 + = “def”; S1 = “abc”; }如果是這樣的話,到這個 for 循環完畢后,如果內存中的對象沒有被 GC 清理掉的話,內存中一共有 2 萬多個了
牽扯到String里內容不斷變換的時候用StringBuffer,
String S1 = “This is only a” + “ simple” + “test”; 速度要比 StringBuffer Sb = new StringBuilder(“This is only a”).append(“ simple”).append(“ test”); 快出很多
String S2 = “This is only a”; String S3 = “ simple”; String S4 = “ test”; String S1 = S2 +S3 + S4;
速度則會慢很多
以上內容摘抄于http://blog.csdn.net/shirleyacount/article/details/39958371
轉載于:https://www.cnblogs.com/qiangqiangqiang/p/7613684.html
總結
以上是生活随笔為你收集整理的StringBuffer笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql之子查询作业
- 下一篇: 【BZOJ】 2463 [中山市选200