最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

StringBuffer與StringBuilder底層擴(kuò)容機(jī)制與常用方法

 更新時(shí)間:2023年07月05日 10:28:15   作者:指揮官乄  
這篇文章主要給大家介紹了StringBuffer、StringBuilder底層擴(kuò)容機(jī)制與常用方法,有感興趣的小伙伴跟著小編一起來(lái)學(xué)習(xí)吧

StringBuffer 與 StringBuilder底層分析、擴(kuò)容機(jī)制與常用方法

StringBuffer(線性安全)

  • 直接父類(lèi)AbstractStringBuilder
  • 實(shí)現(xiàn)了Serializable,可以串行化
  • 在父類(lèi)AbstractStringBuilder有屬性char[] value 不是final類(lèi)型,該value數(shù)字存放字符串內(nèi)容,引出存放在堆中,所以在變化的時(shí)候不用每次都更改地址,創(chuàng)建新的對(duì)象,效率高
  • 是一個(gè)final類(lèi),不能被繼承

StringBuffer構(gòu)造方法

  • StringBuffer()初始容量為16
  • StringBuffer(int capacity) 初始容量為指定大小
  • StringBuffer(String str) 初始容量為指定字符串+16,注意是容量不是長(zhǎng)度

StringBuffer擴(kuò)容 (StringBuilder擴(kuò)容機(jī)制一樣)

擴(kuò)容方式:2n+2

源碼:

private int newCapacity(int minCapacity) {
        // overflow-conscious code
        int newCapacity = (value.length << 1) + 2;
        if (newCapacity - minCapacity < 0) {
            newCapacity = minCapacity;
        }
        return (newCapacity <= 0 || MAX_ARRAY_SIZE - newCapacity < 0)
            ? hugeCapacity(minCapacity)
            : newCapacity;
    }

StringBuffer、StringBuilder的類(lèi)繼承結(jié)構(gòu)圖,兩者的結(jié)構(gòu)圖是一樣的

StringBuffer常用方法

  • 增 append
  • 刪 delete(start,end)
  • 改 replace (start,end,string) ,string是要修改成的新內(nèi)容
  • 查 indexOf(string) , string是要 查找的內(nèi)容
  • 插入 insert
  • 獲取長(zhǎng)度 length() 注意有括號(hào)

StringBuilder (不安全)

  • 線程不安全,單線程優(yōu)先使用,方法中沒(méi)有synchronized修飾
  • 主要操作時(shí)append和insert,可以重載這些方法,可以接受任何類(lèi)型的數(shù)據(jù)
  • 擴(kuò)容機(jī)制與StringBuffer一樣

String、StringBuffer、StringBuilder三者之間的區(qū)別

  • StringBuffer、StringBuilder 均代表可變字符串,方法一樣
  • String:不可變字符序列,效率低,但是復(fù)用率高
  • StringBuffer:可變字符串、增刪效率高,線性安全
  • StringBuilder:可變字符串、增刪效率高,線性不安全

使用場(chǎng)景

1.如果字符串存在大量的修改操作,一般使用StringBuffer 或StringBuilder

2 . 如果字符串存在大量的修改操作,并在單線程的情況,使用 StringBuilder

3.如果字符串存在大量的修改操作,并在多線程的情況,使用 StringBuffer

4.如果我們字符串很少修改,被多個(gè)對(duì)象引用,使用String,比如配置信息等

到此這篇關(guān)于StringBuffer與StringBuilder底層擴(kuò)容機(jī)制與常用方法的文章就介紹到這了,更多相關(guān)StringBuffer與StringBuilder擴(kuò)容與用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java 日期時(shí)間工具包–java.time的使用

    Java 日期時(shí)間工具包–java.time的使用

    這篇文章主要介紹了Java 日期時(shí)間工具包–java.time的使用,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-04-04
  • 淺談Java線程池的7大核心參數(shù)

    淺談Java線程池的7大核心參數(shù)

    本篇文章基于正在看這篇文章的你已經(jīng)具備了基本的Java并發(fā)的相關(guān)知識(shí).如果對(duì)于Java并發(fā)編程一無(wú)所知的話,請(qǐng)先看看Java并發(fā)編程的一些前導(dǎo)基礎(chǔ)知識(shí),文中有非常詳細(xì)的圖文示例及代碼,,需要的朋友可以參考下
    2021-05-05
  • Nacos入門(mén)過(guò)程的坑--獲取不到配置的值問(wèn)題

    Nacos入門(mén)過(guò)程的坑--獲取不到配置的值問(wèn)題

    這篇文章主要介紹了Nacos入門(mén)過(guò)程的坑--獲取不到配置的值問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 詳解Spring中REQUIRED事務(wù)的回滾機(jī)制詳解

    詳解Spring中REQUIRED事務(wù)的回滾機(jī)制詳解

    在Spring的事務(wù)管理中,REQUIRED是最常用也是默認(rèn)的事務(wù)傳播屬性,本文就來(lái)詳細(xì)的介紹一下Spring中REQUIRED事務(wù)的回滾機(jī)制,感興趣的可以了解一下
    2025-09-09
  • Spring Boot + MyBatis Plus 高效開(kāi)發(fā)實(shí)戰(zhàn)從入門(mén)到進(jìn)階優(yōu)化(推薦)

    Spring Boot + MyBatis Plus 高效開(kāi)發(fā)實(shí)戰(zhàn)從入

    本文將詳細(xì)介紹 Spring Boot + MyBatis Plus 的完整開(kāi)發(fā)流程,并深入剖析分頁(yè)查詢、批量操作、動(dòng)態(tài) SQL、樂(lè)觀鎖、代碼優(yōu)化等實(shí)戰(zhàn)技巧,感興趣的朋友一起看看吧
    2025-04-04
  • 利用openoffice+jodconverter-code-3.0-bate4實(shí)現(xiàn)ppt轉(zhuǎn)圖片

    利用openoffice+jodconverter-code-3.0-bate4實(shí)現(xiàn)ppt轉(zhuǎn)圖片

    這篇文章主要為大家詳細(xì)介紹了利用openoffice+jodconverter-code-3.0-bate4實(shí)現(xiàn)ppt轉(zhuǎn)圖片,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • SpringBoot實(shí)現(xiàn)網(wǎng)絡(luò)限速的詳細(xì)步驟

    SpringBoot實(shí)現(xiàn)網(wǎng)絡(luò)限速的詳細(xì)步驟

    本文詳細(xì)介紹了網(wǎng)絡(luò)限速的重要性及常見(jiàn)限速策略,如固定窗口計(jì)數(shù)器、滑動(dòng)窗口計(jì)數(shù)器、令牌桶算法和漏桶算法,并重點(diǎn)講解了如何在SpringBoot中使用AOP和令牌桶算法實(shí)現(xiàn)網(wǎng)絡(luò)限速,通過(guò)自定義注解、面向切面編程和測(cè)試驗(yàn)證等步驟,需要的朋友可以參考下
    2026-04-04
  • 深入理解Java基礎(chǔ)中的集合框架

    深入理解Java基礎(chǔ)中的集合框架

    Java集合框架(Java Collections Framework, JCF)也稱(chēng)容器,這里可以類(lèi)比 C++中的 STL,在這里主要對(duì)如下部分進(jìn)行源碼分析,及在面試中常見(jiàn)的問(wèn)題,例如,在阿里面試常問(wèn)到的 HashMap和ConcurrentHashMap原理等等,深入源碼分析是面試中必備的技能
    2023-08-08
  • SpringBoot使用MyBatis的XML文件進(jìn)行SQL語(yǔ)句編寫(xiě)

    SpringBoot使用MyBatis的XML文件進(jìn)行SQL語(yǔ)句編寫(xiě)

    在現(xiàn)代 Java Web 開(kāi)發(fā)中,Spring Boot 和 MyBatis 是兩個(gè)非常流行的技術(shù)框架,本文將詳細(xì)介紹如何在 Spring Boot 項(xiàng)目中使用 MyBatis 的 XML 文件來(lái)編寫(xiě) SQL 語(yǔ)句,感興趣的可以了解下
    2025-07-07
  • java實(shí)現(xiàn)酷狗音樂(lè)臨時(shí)緩存文件轉(zhuǎn)換為MP3文件的方法

    java實(shí)現(xiàn)酷狗音樂(lè)臨時(shí)緩存文件轉(zhuǎn)換為MP3文件的方法

    這篇文章主要介紹了java實(shí)現(xiàn)酷狗音樂(lè)臨時(shí)緩存文件轉(zhuǎn)換為MP3文件的方法,涉及java針對(duì)文件操作的相關(guān)技巧,需要的朋友可以參考下
    2016-08-08

最新評(píng)論

肃南| 上蔡县| 固原市| 蓝山县| 奎屯市| 奎屯市| 驻马店市| 锦屏县| 榆中县| 原平市| 道真| 禹州市| 寿光市| 基隆市| 谷城县| 吉木乃县| 柳州市| 信丰县| 同心县| 福海县| 娱乐| 南丰县| 神木县| 闸北区| 顺义区| 扎兰屯市| 寿宁县| 周口市| 行唐县| 如皋市| 蒙阴县| 台州市| 海宁市| 申扎县| 长沙县| 福安市| 屯留县| 台南县| 新龙县| 伽师县| 从化市|