java String、StringBuilder和StringBuffer的區(qū)別詳解
1.共同點(diǎn):
三者都是字符串類。StringBuilder和StringBuffer都是繼承AbstractStringBuilder類,存儲(chǔ)字符串都是使用數(shù)組進(jìn)行存儲(chǔ)的。
2.區(qū)別:
a. String 類存儲(chǔ)字符串使用的數(shù)組被final進(jìn)行修飾了,當(dāng)對(duì)String對(duì)象進(jìn)行增加修改字符時(shí),都需要重新new一個(gè)字符數(shù)組,將原來的值拷貝到新的字符數(shù)組中,所以當(dāng)字符串的值需要經(jīng)常修改的時(shí)候就需要考慮用StringBuilder或StringBuffer來進(jìn)行處理了。
public final class String implements java.io.Serializable, Comparable<String>, CharSequence { private final char value[]; }
b.StringBuffer和StringBuilder也是使用字符數(shù)組來進(jìn)行存儲(chǔ)字符串的,但沒有使用final進(jìn)行修飾;StringBuffer定義的方法都加入了synchronized修飾,也就是說StringBuffer類方法都是線程安全的,而StringBuilder方法沒有被修飾,兩者常用的方法是append()。
3.使用場景:
- 當(dāng)字符串值不會(huì)變化時(shí),考慮使用String
- 當(dāng)字符串的值多變的時(shí)候,考慮使用StringBuilder或者StringBuffer
- 當(dāng)要求線程安全時(shí)候,考慮使用StringBuffer。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 詳解java中String、StringBuilder、StringBuffer的區(qū)別
- Java中關(guān)于String StringBuffer StringBuilder特性深度解析
- java中String、StringBuffer與StringBuilder的區(qū)別
- java中String StringBuffer和StringBuilder的區(qū)別詳解
- Java源碼深度分析String與StringBuffer及StringBuilder詳解
- Java中String和StringBuffer及StringBuilder?有什么區(qū)別
- 詳解Java中String,StringBuffer和StringBuilder的使用
- Java StringBuffer與StringBuilder有什么區(qū)別
- Java中String、StringBuffer和StringBuilder的區(qū)別
- 一文講解Java的String、StringBuffer和StringBuilder的使用與區(qū)別
相關(guān)文章
SpringCloud+Redis實(shí)現(xiàn)Api接口限流防止惡意刷接口
接口限流是為了保護(hù)系統(tǒng)和服務(wù),防止因?yàn)檫^多的請(qǐng)求而崩潰,本文主要介紹了SpringCloud+Redis實(shí)現(xiàn)Api接口限流防止惡意刷接口,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03Java異常 Factory method''sqlSessionFactory''rew exception;este
這篇文章主要介紹了Java異常 Factory method ‘sqlSessionFactory‘ threw exception; nested exception is java.lang.NoSuchMethodError:,本文介紹了springboot 引入mybatis-plus后報(bào)錯(cuò)的解決方案,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07Springboot視圖解析器ViewResolver使用實(shí)例
這篇文章主要介紹了Springboot視圖解析器ViewResolver使用實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04java實(shí)現(xiàn)HttpClient異步請(qǐng)求資源的方法
這篇文章主要介紹了java實(shí)現(xiàn)HttpClient異步請(qǐng)求資源的方法,實(shí)例分析了java基于http協(xié)議實(shí)現(xiàn)異步請(qǐng)求的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07深入理解Netty?FastThreadLocal優(yōu)缺點(diǎn)及實(shí)現(xiàn)邏輯
本文以線上詭異問題為切入點(diǎn),通過對(duì)比JDK ThreadLocal和Netty FastThreadLocal實(shí)現(xiàn)邏輯以及優(yōu)缺點(diǎn),并深入解讀源碼,由淺入深理解Netty FastThreadLocal2023-10-10Java讀取文件及基于正則表達(dá)式的獲取電話號(hào)碼功能詳解
這篇文章主要介紹了Java讀取文件及基于正則表達(dá)式的獲取電話號(hào)碼功能,結(jié)合實(shí)例形式詳細(xì)分析了正則匹配操作的相關(guān)語法及電話號(hào)碼匹配的原理與實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-09-09springboot全局配置文件與多環(huán)境配置的全過程
SpringBoot項(xiàng)目在多環(huán)境配置上表現(xiàn)的非常優(yōu)秀,只需要非常簡單的操作就可以完成配置,下面這篇文章主要給大家介紹了關(guān)于springboot全局配置文件與多環(huán)境配置的相關(guān)資料,需要的朋友可以參考下2021-12-12如何從eureka獲取服務(wù)的ip和端口號(hào)進(jìn)行Http的調(diào)用
這篇文章主要介紹了如何從eureka獲取服務(wù)的ip和端口號(hào)進(jìn)行Http的調(diào)用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03