亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

String、StringBuffer與StringBuilder三者的區別是什么

發布時間:2020-06-23 13:33:16 來源:億速云 閱讀:447 作者:元一 欄目:編程語言

今天就跟大家聊聊有關String、StringBuffer與StringBuilder三者的區別,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

概念:

String是C++、java等編程語言中的字符串。 在java、C#中,String類是不可變的,對String類的任何改變,都是返回一個新的String類對象。 String 對象是 System.Char 對象的有序集合,用于表示字符串。String 對象的值是該有序集合的內容,并且該值是不可變的。

StringBuffer是字符串變量,它的對象是可以擴充和修改的。StringBuffer對象的初始化不像String類的初始化一樣,Java提供的有特殊的語法,而通常情況下一般使用構造方法進行初始化。

StringBuilder是一個可變的字符序列。此類提供一個與 StringBuffer 兼容的 API,但不保證同步。該類被設計用作 StringBuffer 的一個簡易替換,用在字符串緩沖區被單個線程使用的時候。

三者都是用來對字符串進行操作,String通常用來定義一個變量,而StringBuilder StringBuffer則通常用來對字符串進行拼接等操作。但其實String同樣的可以用來拼接字符串,可我們為什么很少使用呢,這樣從三者的底層代碼說起。

String、StringBuffer與StringBuilder三者的區別是什么

String的底層代碼為一個用final修飾的char數組,這意味著定義一個String變量以后,該變量的內容是不可變的。

String、StringBuffer與StringBuilder三者的區別是什么

String、StringBuffer與StringBuilder三者的區別是什么

String、StringBuffer與StringBuilder三者的區別是什么

StringBuilder 與StringBuffer都繼承自AbstractStringBuilder,該類的char數組并沒有用final修飾,內容是可變的,這個是什么意思呢。

比如:

String s1= "a";
String s2 = new String("b") ;
String s3 = s1+s2;

如果這樣,我們得到“ab”這個字符串,因為String底層未不可變的字符串,所以會創建三個對象,都會占用內存,而這三個對象一直都未失去引用,所以jvm無法垃圾回收,造成內存資源的大量浪費,這在我們開發中是不推崇的,而StringBuilder 與StringBuffer則不存在這樣的問題。

String、StringBuffer與StringBuilder三者的區別是什么

String、StringBuffer與StringBuilder三者的區別是什么

String、StringBuffer與StringBuilder三者的區別是什么

通過底層代碼我們可以看到StringBuilder 與StringBuffer在拼接字符串時,通過判斷字符串長度是否足夠,從而創建一個新的數組用來封裝數據,而原來的對象被放棄引用,等待垃圾回收,從而減少內存的浪費,因此在拼接字符串等操作時,我們通常使用StringBuilder 與StringBuffer,但兩者在執行效率上又有不同,StringBuilder的執行效率較高,這是為什么呢?

String、StringBuffer與StringBuilder三者的區別是什么

String、StringBuffer與StringBuilder三者的區別是什么

通過底層源碼,可以發現StringBuffer在拼接字符串時,使用了同步鎖,安全性提高,而StringBuilder未使用同步鎖,故效率提高。

看完上述內容,你們對String、StringBuffer與StringBuilder三者的區別有進一步的了解嗎?如果還想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江安县| 满城县| 安龙县| 西贡区| 新营市| 武功县| 金乡县| 江陵县| 治县。| 汉沽区| 高州市| 平昌县| 车险| 宁远县| 拉萨市| 广元市| 班戈县| 平顶山市| 涞水县| 夏津县| 霍林郭勒市| 河北区| 广东省| 彰化县| 个旧市| 武夷山市| 武安市| 吉木萨尔县| 博客| 昂仁县| 双柏县| 潍坊市| 鄂托克旗| 鄂伦春自治旗| 共和县| 凤翔县| 邵武市| 抚宁县| 舒兰市| 泸西县| 元朗区|