String、StringBuffer與StringBuilder三者的區(qū)別是什么

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

汨羅ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

概念:

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

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

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

三者都是用來對字符串進(jìn)行操作,String通常用來定義一個變量,而StringBuilder StringBuffer則通常用來對字符串進(jìn)行拼接等操作。但其實String同樣的可以用來拼接字符串,可我們?yōu)槭裁春苌偈褂媚?,這樣從三者的底層代碼說起。

String、StringBuffer與StringBuilder三者的區(qū)別是什么

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

String、StringBuffer與StringBuilder三者的區(qū)別是什么

String、StringBuffer與StringBuilder三者的區(qū)別是什么

String、StringBuffer與StringBuilder三者的區(qū)別是什么

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

比如:

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

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

String、StringBuffer與StringBuilder三者的區(qū)別是什么

String、StringBuffer與StringBuilder三者的區(qū)別是什么

String、StringBuffer與StringBuilder三者的區(qū)別是什么

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

String、StringBuffer與StringBuilder三者的區(qū)別是什么

String、StringBuffer與StringBuilder三者的區(qū)別是什么

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

看完上述內(nèi)容,你們對String、StringBuffer與StringBuilder三者的區(qū)別有進(jìn)一步的了解嗎?如果還想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀。

網(wǎng)頁名稱:String、StringBuffer與StringBuilder三者的區(qū)別是什么
當(dāng)前URL:http://bm7419.com/article30/jcihpo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、動態(tài)網(wǎng)站、虛擬主機(jī)、靜態(tài)網(wǎng)站域名注冊、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化