亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spring配置多個數(shù)據(jù)源并實現(xiàn)動態(tài)切換示例

    Spring配置多個數(shù)據(jù)源并實現(xiàn)動態(tài)切換示例

    本篇文章主要介紹了Spring配置多個數(shù)據(jù)源并實現(xiàn)動態(tài)切換示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Java類加載基本過程詳細介紹

    Java類加載基本過程詳細介紹

    這篇文章主要介紹了Java類加載基本過程詳細介紹的相關資料,需要的朋友可以參考下
    2016-12-12
  • eclipse配置tomcat10的詳細步驟總結

    eclipse配置tomcat10的詳細步驟總結

    今天給大家?guī)淼氖顷P于Java的相關知識,文章圍繞著eclipse配置tomcat10的詳細步驟展開,文中有非常詳細的介紹及圖文示例,需要的朋友可以參考下
    2021-06-06
  • 基于Maven的pom.xml文件詳解

    基于Maven的pom.xml文件詳解

    下面小編就為大家?guī)硪黄贛aven的pom.xml文件詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • IDEA導入Eclipse項目的方法步驟(圖文教程)

    IDEA導入Eclipse項目的方法步驟(圖文教程)

    這篇文章主要介紹了IDEA導入Eclipse項目的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • Java JTable 實現(xiàn)日歷的示例

    Java JTable 實現(xiàn)日歷的示例

    這篇文章主要介紹了Java JTable 實現(xiàn)日歷的示例,幫助大家更好的理解和學習Java jtable的使用方法,感興趣的朋友可以了解下
    2020-10-10
  • Spring Boot如何通過java -jar啟動

    Spring Boot如何通過java -jar啟動

    大家開發(fā)的基于Spring Boot 的應用 ,jar形式, 發(fā)布的時候,絕大部分都是使用java -jar 啟動。本文主要介紹了Spring Boot如何通過java -jar啟動,一起來了解一下
    2021-05-05
  • Java設計模式之適配器模式簡介

    Java設計模式之適配器模式簡介

    這篇文章主要介紹了Java設計模式之適配器模式,需要的朋友可以參考下
    2014-07-07
  • Spring Boot 通過 Mvc 擴展方便進行貨幣單位轉換的代碼詳解

    Spring Boot 通過 Mvc 擴展方便進行貨幣單位轉換的代碼詳解

    這篇文章主要介紹了Spring Boot 通過 Mvc 擴展方便進行貨幣單位轉換,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • SpringBoot與docker的結合的示例

    SpringBoot與docker的結合的示例

    本篇文章主要介紹了SpringBoot與docker的結合的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03

最新評論