JAVA中String類與StringBuffer類的區(qū)別
在Java中有兩種字符串的操作:String類和StringBuffer類(緩沖字符串處理類)。
下面先簡單的說一下兩者的區(qū)別。
String類和StringBuffer類都提供了相應(yīng)的方法實現(xiàn)字符串的操作,但二者略有不同。
(1) String類
該類一旦產(chǎn)生一個字符串,其對象就不可變。String類的內(nèi)容和長度是固定的。如果程序需要獲得字符串的信息需要調(diào)用系統(tǒng)提供的各種字符串操作方法實現(xiàn)。雖然通過各種系統(tǒng)方法可以對字符串施加操作,但這并不改變對象實例本身,而是生成一個新的實例。系統(tǒng)為String類對象分配內(nèi)存,是按照對象所包含的實際字符數(shù)分配的。
(2) StringBuffer類
查了查Buffer這個詞,有緩沖的意思,這個類肯定有緩沖的功能。該類處理可變的字符串。如果要修改一個StringBuffer類的字符串,不需要再創(chuàng)建新的字符串對象,而是直接操作原來的串。該類的各種字符串操作方法與String類提供的方法不相同。系統(tǒng)為StringBuffer類分配內(nèi)存時,除去當(dāng)前字符所占的空間外,還提供另外的16個字符大小的緩沖區(qū)。每個StringBuffer對象都有一定的緩沖區(qū)容量,當(dāng)字符串大小沒有超過容量時,不會分配新的容量,當(dāng)字符串大小超過容量時,會自動增加容量。
下面來舉一些具體的實例
字符串的連接
String類有兩種方法
第一種(“+”)
public class str{ public static void main(String[] args){ String str1="加特效!"; String str2="Duang~~"; System.out.println(str1+" "+str2); } }
第二種(”concat”)
public class str{ public static void main(String[] args){ String str1="加特效!"; String str2="Duang~~"; System.out.println(str1.concat(str2)); } }
StringBuffer類的方法
public class str{ public static void main(String[] args){ //構(gòu)建一個緩沖字符串的對象sb StringBuffer sb=new StringBuffer("加特效!"); //通過append方法,在這個對象后面添加一個新字符串 sb.append(" Duang~~"); System.out.println(sb); } }
最終輸出的結(jié)果都為:加特效! Duang~~
通過上面的例子不難看出,String類在進(jìn)行擴(kuò)展的時候,需要實例兩個對象,每個對象都會占用一定的內(nèi)存,而StringBuffer類就不需要再實例化一個新的類,只需要調(diào)用一個擴(kuò)展的方法就可以了。
還有一點(diǎn)StringBuffer類的內(nèi)存容量是可擴(kuò)展的。舉個具體的例子:
public class str{ public static void main(String[] args){ //聲明字符串對象sb StringBuffer sb=new StringBuffer(40); System.out.println(sb.capacity()); //輸出字符串的容量capacity sb.ensureCapacity(100); //擴(kuò)充容量 System.out.println(sb.capacity()); //輸出字符串的容量capacity } }
capacity()方法代表了字符串對象在內(nèi)存中,可以容納字符串的個數(shù)。如果想要擴(kuò)充內(nèi)存容量,可以使用方法ensureCapacity()。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java利用StringBuffer替換特殊字符的方法實現(xiàn)
- 詳解java中String、StringBuilder、StringBuffer的區(qū)別
- java中stringbuffer線程安全分析實例詳解
- Java常用類庫StringBuffer,Runtime,日期操作類等類庫總結(jié)
- java String、StringBuilder和StringBuffer的區(qū)別詳解
- JAVA面試題 從源碼角度分析StringBuffer和StringBuilder的區(qū)別
- Java中字符數(shù)組、String類、StringBuffer三者之間相互轉(zhuǎn)換
- JAVA StringBuffer類與StringTokenizer類代碼解析
- java之StringBuffer常見使用方法解析
- java 中String和StringBuffer與StringBuilder的區(qū)別及使用方法
- Java String 和StringBuffer的詳解及區(qū)別
- Java中StringBuffer和StringBuilder_動力節(jié)點(diǎn)Java學(xué)院整理
- java中 String和StringBuffer的區(qū)別實例詳解
- Java基礎(chǔ)之StringBuffer詳解
相關(guān)文章
SpringBoot如何引入緩存提高單次查詢數(shù)據(jù)效率
這篇文章主要介紹了SpringBoot如何引入緩存提高單次查詢數(shù)據(jù)效率問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01淺談MyBatis3 DynamicSql風(fēng)格語法使用指南
這篇文章主要介紹了淺談MyBatis3 DynamicSql風(fēng)格語法使用指南,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03從java反編譯及字節(jié)碼角度探索分析String拼接字符串效率
這篇文章主要介紹了從java反編譯及字節(jié)碼角度探索分析String拼接字符串效率,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12淺試仿?mapstruct實現(xiàn)微服務(wù)編排框架詳解
這篇文章主要為大家介紹了淺試仿?mapstruct實現(xiàn)微服務(wù)編排框架詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08java設(shè)計模式—靜態(tài)代理模式(聚合與繼承方式對比)
下面小編就為大家?guī)硪黄猨ava設(shè)計模式—靜態(tài)代理模式(聚合與繼承方式對比)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05解決springmvc+mybatis+mysql中文亂碼問題
這篇文章主要介紹了解決java中springmvc+mybatis+mysql中文亂碼問題的相關(guān)資料,需要的朋友可以參考下2015-09-09