日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA进阶教学之(StrngBuffer进行字符串拼接)

發布時間:2024/7/23 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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进行字符串拼接)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。