欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中String、StringBuffer和StringBuilder的區(qū)別

 更新時間:2024年01月09日 10:12:50   作者:玄月沐影  
這篇文章主要介紹了Java中String、StringBuffer和StringBuilder的區(qū)別,StringBuilder與StringBuffer都繼承自AbstractStringBuilder類,在AbstractStringBuilder中也是使用字符數(shù)組保存字符串char[]value但是沒有final關(guān)鍵字修飾,所以這兩個可變,需要的朋友可以參考下

String、StringBuffer和StringBuilder區(qū)別

在jdk源碼中

private final char value[];
  • final用來修飾一個類;此類不能被其他類所繼承。如String類、System類、StringBuffer類
  • final用來修飾方法;此方法不可以被重寫。如Object類中的getClass();
  • final用來修飾變量;此時的”變量“就稱位一個常量
    • 修飾屬性可以考慮賦值的位置:顯式初始化、代碼塊中初始化、構(gòu)造器中初始化
    • final修飾局部變量:尤其是使用final修飾形參時,表明此形參是一個常量。當(dāng)我們調(diào)用此方法時,給常量形參賦一個實(shí)參。一旦賦值以后,就只能在方法體內(nèi)使用此形參,但不能進(jìn)行重新賦值。
  • static final 用來修飾屬性:全局常量

StringBuilder與StringBuffer都繼承自AbstractStringBuilder類,在AbstractStringBuilder中也是使用字符數(shù)組保存字符串char[]value但是沒有final關(guān)鍵字修飾,所以這兩個可變。

完整源碼可自行查閱

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 對?法加了同步鎖或者對調(diào)?的?法加了同步 鎖,所以是線程安全的。StringBuilder 并沒有對?法進(jìn)?加同步鎖,所以是?線程安全的。

性能

每次對 String 類型進(jìn)?改變的時候,都會?成?個新的 String 對象,然后將指針指向新的 String 對象。StringBuffer 每次都會對 StringBuffer 對象本身進(jìn)?操作,?不是?成新的對象并改變對象 引?。相同情況下使? StringBuilder 相?使? StringBuffer 僅能獲得 10%~15% 左右的性能提升, 但卻要冒多線程不安全的?險。

使用建議

操作少量的數(shù)據(jù): 適? String單線程操作字符串緩沖區(qū)下操作?量數(shù)據(jù): 適? StringBuilder多線程操作字符串緩沖區(qū)下操作?量數(shù)據(jù): 適? StringBuffer

到此這篇關(guān)于Java中String、StringBuffer和StringBuilder的區(qū)別的文章就介紹到這了,更多相關(guān)String、StringBuffer和StringBuilder區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論