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

Java中的StringBuilder類(lèi)解析

 更新時(shí)間:2023年09月21日 09:06:12   作者:Neo丶  
這篇文章主要介紹了Java中的StringBuilder類(lèi)解析,該類(lèi)被設(shè)計(jì)用作StringBuffer的一個(gè)簡(jiǎn)易替換,用在字符串緩沖區(qū)被單線程使用的時(shí)候,如果可能,優(yōu)先采用該類(lèi),因?yàn)樵诖蠖鄶?shù)實(shí)現(xiàn)中,String Builder比StringBuffer要快,需要的朋友可以參考下

基本介紹

1)一個(gè)可變的字符序列。此類(lèi)提供一個(gè)與StringBuffer兼容的API,但不保證同步(StringBuilder不是線程安全)。該類(lèi)被設(shè)計(jì)用作StringBuffer的一個(gè)簡(jiǎn)易替換,用在字符串緩沖區(qū)被單線程使用的時(shí)候。如果可能,優(yōu)先采用該類(lèi),因?yàn)樵诖蠖鄶?shù)實(shí)現(xiàn)中,String Builder比StringBuffer要快;

2)在StringBuilder上的主要操作是append()和insert()方法,可重載這些方法,以接受任意類(lèi)型的數(shù)據(jù)。

StringBuilder常用方法

與StringBuffer相同,參考StringBuffer類(lèi)。

1)StringBuilder是final,無(wú)法被繼承;

2)繼承了AbstractStringBuilder類(lèi),屬性char[] value,內(nèi)容存放到value中

3)實(shí)現(xiàn)了Serializable接口,序列化(可以保存類(lèi)型和數(shù)據(jù)本身)。

package com.pero.stringbuilder_;
/**
 * @author Pero
 * @version 1.0
 */
public class StringBuilder01 {
    public static void main(String[] args) {
        //1.StringBuilder 繼承 AbstractStringBuilder 類(lèi)
        //2.實(shí)現(xiàn)了Serializable接口,說(shuō)明StringBuilder對(duì)象是可以串行化的(對(duì)象可以網(wǎng)絡(luò)傳輸,可以保存到文件)
        //3.StringBuilder 是final類(lèi),不能被繼承
        //4.StringBuilder 對(duì)象的字符序列存放在其父類(lèi) AbstractStringBuilder的char[] value;
        //  因此,字符序列是在堆中的
        //5.StringBuilder 的方法,沒(méi)有做互斥處理,即沒(méi)有synchronized關(guān)鍵字,因此在單線程的情況下使用StringBuilder
        StringBuilder stringBuilder = new StringBuilder();
    }
}

String、StringBuffer和StringBuilder的比較

1)StringBuilder和StringBuffer非常類(lèi)似,均代表可變的字符序列,而且方法也一樣

2)String:不可變字符序列,效率低,但復(fù)用率高(常量池中的字符串可以被指向多個(gè)對(duì)象)

3)StringBuffer:可變字符序列,效率高(增刪)、線程安全(幾乎所有方法都加了synchronized關(guān)鍵字)

4)StringBuilder:可變字符序列,效率最高,但是線程不安全

5)String的使用注意事項(xiàng):

String s = "a";? //常見(jiàn)一個(gè)字符串
s += "b";? //實(shí)際上原來(lái)的"a"字符串已經(jīng)被丟棄,產(chǎn)生了一個(gè)新的字符串 s + "b"(也就是"ab")

如果多次執(zhí)行這些改變字符串內(nèi)容的操作,會(huì)導(dǎo)致大量的副本字符串對(duì)象存留在內(nèi)存中,降低效率。

如果這樣的操作放到循環(huán)中,會(huì)極大影響程序的性能=>結(jié)論:如果需要對(duì)String做大量修改,不要使用Sting類(lèi),建議使用StringBuffer和StringBuilder(單線程情況下)類(lèi)。

package com.pero.stringbuilder_;
/**
 * @author Pero
 * @version 1.0
 */
public class StringBuilder02 {
    public static void main(String[] args) {
        String text = "";
        long startTime = 0L;
        long endTime = 0L;
        StringBuffer stringBuffer = new StringBuffer("");
        StringBuilder stringBuilder = new StringBuilder("");
        //測(cè)試StringBuffer的運(yùn)行效率
        startTime = System.currentTimeMillis();
        for (int i = 0; i < 20000; i++) {
            stringBuffer.append(String.valueOf(i));
        }
        endTime = System.currentTimeMillis();
        System.out.println("StringBuffer的執(zhí)行時(shí)間:"+(endTime-startTime));
        //測(cè)試StringBuilder的運(yùn)行效率
        startTime = System.currentTimeMillis();
        for (int i = 0; i < 20000; i++) {
            stringBuilder.append(String.valueOf(i));
        }
        endTime = System.currentTimeMillis();
        System.out.println("StringBuilder的執(zhí)行時(shí)間:"+(endTime-startTime));
        //測(cè)試String的運(yùn)行效率
        startTime = System.currentTimeMillis();
        for (int i=0; i < 20000;i++){
            text = text + i;
        }
        endTime = System.currentTimeMillis();
        System.out.println("String的執(zhí)行時(shí)間:"+(endTime-startTime));
    }
}

使用原則:

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

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

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

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

StringBuilder的方法使用和StringBuffer一樣。

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

相關(guān)文章

  • Spring 中@Validated 分組校驗(yàn)的使用解析

    Spring 中@Validated 分組校驗(yàn)的使用解析

    這篇文章主要介紹了Spring 中@Validated 分組校驗(yàn)的使用解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java詳解ScriptEngine接口動(dòng)態(tài)執(zhí)行JS腳本

    Java詳解ScriptEngine接口動(dòng)態(tài)執(zhí)行JS腳本

    ScriptEngine是基本接口,其方法必須在本規(guī)范的每個(gè)實(shí)現(xiàn)中完全起作用。這些方法提供基本腳本功能。 寫(xiě)入這個(gè)簡(jiǎn)單接口的應(yīng)用程序可以在每個(gè)實(shí)現(xiàn)中進(jìn)行最少的修改。 它包括執(zhí)行腳本的方法,以及設(shè)置和獲取值的方法
    2022-08-08
  • Java使用TarsosDSP庫(kù)實(shí)現(xiàn)音頻的處理和格式轉(zhuǎn)換

    Java使用TarsosDSP庫(kù)實(shí)現(xiàn)音頻的處理和格式轉(zhuǎn)換

    在音頻處理領(lǐng)域,Java雖然有原生的音頻處理類(lèi)庫(kù),但其功能相對(duì)基礎(chǔ),而TarsosDSP是一個(gè)強(qiáng)大的開(kāi)源音頻處理庫(kù),提供了豐富的功能,本文將介紹如何在Java中結(jié)合使用TarsosDSP庫(kù),來(lái)實(shí)現(xiàn)音頻的處理和格式轉(zhuǎn)換,需要的朋友可以參考下
    2025-04-04
  • SpringBoot集成Eclipse Mosquitto的實(shí)現(xiàn)示例

    SpringBoot集成Eclipse Mosquitto的實(shí)現(xiàn)示例

    本文主要介紹了SpringBoot集成Eclipse Mosquitto的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-08-08
  • 論java如何通過(guò)反射獲得方法真實(shí)參數(shù)名及擴(kuò)展研究

    論java如何通過(guò)反射獲得方法真實(shí)參數(shù)名及擴(kuò)展研究

    這篇文章主要為大家介紹了java如何通過(guò)反射獲得方法的真實(shí)參數(shù)名以及擴(kuò)展研究,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步早日升職加薪
    2022-01-01
  • java同步開(kāi)篇入門(mén)簡(jiǎn)單介紹

    java同步開(kāi)篇入門(mén)簡(jiǎn)單介紹

    java中的CountDownLatch、Semaphore、CyclicBarrier這些類(lèi)又不屬于鎖,它們和鎖又有很多共同點(diǎn),都是為了協(xié)同多線程的執(zhí)行,都是一種同步器,所以這里就借用同步來(lái)取名字了,也就是“同步系列”的來(lái)源。下面小編來(lái)簡(jiǎn)單介紹下
    2019-05-05
  • java實(shí)現(xiàn)文件夾解壓和壓縮

    java實(shí)現(xiàn)文件夾解壓和壓縮

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)文件夾解壓和壓縮,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 詳解Idea中HTTP Client請(qǐng)求測(cè)試工具的使用

    詳解Idea中HTTP Client請(qǐng)求測(cè)試工具的使用

    今天抽空給大家分享Idea中HTTP Client請(qǐng)求測(cè)試工具的使用,小編在這建議使用HTTP Client的Idea版本最好在2018以上,不然的話體驗(yàn)不是多好,今天就給大家介紹Idea中HTTP Client怎么使用的,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • Java實(shí)現(xiàn)日志打印的15條新手建議

    Java實(shí)現(xiàn)日志打印的15條新手建議

    優(yōu)秀的代碼不僅要功能正確,更要具備良好的可維護(hù)性,而規(guī)范的日志打印,正是實(shí)現(xiàn)這一目標(biāo)的關(guān)鍵要素之一,所以本文給大家介紹了Java實(shí)現(xiàn)日志打印的15條新手建議,需要的朋友可以參考下
    2025-12-12
  • Java實(shí)戰(zhàn)之實(shí)現(xiàn)在線小說(shuō)閱讀系統(tǒng)

    Java實(shí)戰(zhàn)之實(shí)現(xiàn)在線小說(shuō)閱讀系統(tǒng)

    本文主要介紹了一個(gè)通過(guò)Java實(shí)現(xiàn)的在線電子書(shū)小說(shuō)閱讀系統(tǒng),文中用到的技術(shù)有Layui、Springboot、SpringMVC、HTML、FTP、JavaScript、JQuery等,感興趣的可以試試
    2022-01-01

最新評(píng)論

历史| 石嘴山市| 延川县| 蓝山县| 红安县| 兰溪市| 河津市| 白玉县| 上饶市| 突泉县| 永昌县| 大石桥市| 台东市| 襄城县| 达日县| 阿鲁科尔沁旗| 霸州市| 漳州市| 蒙自县| 开封市| 永新县| 克拉玛依市| 博乐市| 江孜县| 虎林市| 黎城县| 行唐县| 尖扎县| 宜丰县| 蓬莱市| 克拉玛依市| 怀远县| 桃江县| 林周县| 大悟县| 钟山县| 常宁市| 蒙山县| 雷山县| 仁化县| 阿城市|