JAVA进阶教学之(StrngBuffer进行字符串拼接)
使用StringBuffer字符串拼接目的就是為了讓字符串占用的內存空間減少,提高效率
?
思考:我們在實際的開發中,如果需要進行字符串的頻繁拼接,會有什么問題?
答案:
因為java中的字符串是不可變的,每一次拼接都會產生新的字符串,這樣會占用大量的方法區內存,造成內存空間的浪費
?
底層分析:
?
代碼演示:
public class StringTest05 {public static void main(String[] args) {String s="abc";s+="hello";System.out.println(s);//以后要進行大量字符串操作的時候,盡量用JDK自帶的StringBuffer//創建一個初始化容量為16個byte[]數組,也叫做字符串緩沖區對象 //50是初始的容量大小為50,不是16了,默認情況才是16StringBuffer stringBuffer=new StringBuffer(50);//以后拼接字符串,統一調用append()方法進行追加stringBuffer.append("a");stringBuffer.append("b");stringBuffer.append(3.15);System.out.println(stringBuffer);} }?
?
?
?
管中窺豹:
在String類中底層代碼其實是字符類型的數組char[] ,另外,用final修飾,也就意味著,String在直接創建的時候,根據其底層是final修飾的數組這個前提下,我們得知,一旦創建,其長度和內存地址不會發生改變
?
管中窺豹:
StringBuffer中是創建一個16個空間的字符數組
底層調用的是數組的拷貝
?
畫圖分析:(使用String直接創建字符串和使用StringBuffer追加字符串的不同)
String是寫死容量,你創建多少就使用多少
StirngBuffer是動態容量,你創建的初始空間是16個字符,后續如果超過此數據后,會創建一個更大的數組存儲,那么之前存儲的數據首先會拷貝進新的數組內,舊的數組會有垃圾回收機制回收
?
如何優化StringBuffer的性能:
在創建StringBuffer的時候盡可能給定一個初始化容量
最好減少底層數組的擴容次數,預估計以下,給一個足夠你創建樣本數據的初始化容量
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的JAVA进阶教学之(StrngBuffer进行字符串拼接)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JdbcTemplate(操作数据库-修
- 下一篇: python实现关联算法_python使