Java中String、StringBuffer和StringBuilder的區(qū)別
String、StringBuffer和StringBuilder區(qū)別
在jdk源碼中
private final char value[];
- final用來修飾一個類;此類不能被其他類所繼承。如String類、System類、StringBuffer類
- final用來修飾方法;此方法不可以被重寫。如Object類中的getClass();
- final用來修飾變量;此時的”變量“就稱位一個常量
- 修飾屬性可以考慮賦值的位置:顯式初始化、代碼塊中初始化、構造器中初始化
- final修飾局部變量:尤其是使用final修飾形參時,表明此形參是一個常量。當我們調用此方法時,給常量形參賦一個實參。一旦賦值以后,就只能在方法體內使用此形參,但不能進行重新賦值。
- static final 用來修飾屬性:全局常量

StringBuilder與StringBuffer都繼承自AbstractStringBuilder類,在AbstractStringBuilder中也是使用字符數(shù)組保存字符串char[]value但是沒有final關鍵字修飾,所以這兩個可變。
完整源碼可自行查閱
abstract class AbstractStringBuilder implements Appendable, CharSequence {
/**
* The value is used for character storage.
*/
char[] value;
/**
* The count is the number of characters used.
*/
int count;
/**
* This no-arg constructor is necessary for serialization of subclasses.
*/
AbstractStringBuilder() {
}
/**
* Creates an AbstractStringBuilder of the specified capacity.
*/
AbstractStringBuilder(int capacity) {
value = new char[capacity];
}StringBuffer和StringBuild區(qū)別
線程安全
String 中的對象是不可變的,也就可以理解為常量,線程安全。AbstractStringBuilder 是 StringBuilder 與 StringBuffer 的公共?類,定義了?些字符串的基本操作,如 expandCapacity、 append、insert、indexOf 等公共?法。StringBuffer 對?法加了同步鎖或者對調?的?法加了同步 鎖,所以是線程安全的。StringBuilder 并沒有對?法進?加同步鎖,所以是?線程安全的。
性能
每次對 String 類型進?改變的時候,都會?成?個新的 String 對象,然后將指針指向新的 String 對象。StringBuffer 每次都會對 StringBuffer 對象本身進?操作,?不是?成新的對象并改變對象 引?。相同情況下使? StringBuilder 相?使? StringBuffer 僅能獲得 10%~15% 左右的性能提升, 但卻要冒多線程不安全的?險。
使用建議
操作少量的數(shù)據(jù): 適? String單線程操作字符串緩沖區(qū)下操作?量數(shù)據(jù): 適? StringBuilder多線程操作字符串緩沖區(qū)下操作?量數(shù)據(jù): 適? StringBuffer
到此這篇關于Java中String、StringBuffer和StringBuilder的區(qū)別的文章就介紹到這了,更多相關String、StringBuffer和StringBuilder區(qū)別內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- Java字符處理之char、String、StringBuilder和StringBuffer詳解
- Java中的char、String、StringBuilder與StringBuffer全方面解析
- Java字符串四大類之String、StringBuffer、StringBuilder、StringJoiner詳解
- Java中String、StringBuffer和StringBuilder底層實現(xiàn)深入剖析
- Java中StringBuilder與StringBuffer的區(qū)別
- Java中StringBuilder與StringBuffer使用及源碼解讀
- 淺析Java中StringBuffer和StringBuilder的使用
- 詳解Java中String,StringBuffer和StringBuilder的使用
- Java中String和StringBuffer及StringBuilder?有什么區(qū)別
- Java 中 String、StringBuffer、StringBuilder 的區(qū)別
相關文章
Mybatis-plus批量去重插入ON DUPLICATE key update使用方式
這篇文章主要介紹了Mybatis-plus批量去重插入ON DUPLICATE key update使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
SpringBoot整合flyway實現(xiàn)自動創(chuàng)建表的方法
這篇文章主要介紹了SpringBoot整合flyway實現(xiàn)自動創(chuàng)建表的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03
JAVA使用JDBC技術操作SqlServer數(shù)據(jù)庫實例代碼
本篇文章主要介紹了JAVA使用JDBC技術操作SqlServer數(shù)據(jù)庫實例代碼,具有一定的參考價值,有興趣的可以了解一下。2017-01-01

