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

Java中的StringBuilder類解析

 更新時間:2023年09月21日 09:06:12   作者:Neo丶  
這篇文章主要介紹了Java中的StringBuilder類解析,該類被設計用作StringBuffer的一個簡易替換,用在字符串緩沖區(qū)被單線程使用的時候,如果可能,優(yōu)先采用該類,因為在大多數實現中,String Builder比StringBuffer要快,需要的朋友可以參考下

基本介紹

1)一個可變的字符序列。此類提供一個與StringBuffer兼容的API,但不保證同步(StringBuilder不是線程安全)。該類被設計用作StringBuffer的一個簡易替換,用在字符串緩沖區(qū)被單線程使用的時候。如果可能,優(yōu)先采用該類,因為在大多數實現中,String Builder比StringBuffer要快;

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

StringBuilder常用方法

與StringBuffer相同,參考StringBuffer類。

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

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

3)實現了Serializable接口,序列化(可以保存類型和數據本身)。

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

String、StringBuffer和StringBuilder的比較

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

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

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

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

5)String的使用注意事項:

String s = "a";? //常見一個字符串
s += "b";? //實際上原來的"a"字符串已經被丟棄,產生了一個新的字符串 s + "b"(也就是"ab")

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

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

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("");
        //測試StringBuffer的運行效率
        startTime = System.currentTimeMillis();
        for (int i = 0; i < 20000; i++) {
            stringBuffer.append(String.valueOf(i));
        }
        endTime = System.currentTimeMillis();
        System.out.println("StringBuffer的執(zhí)行時間:"+(endTime-startTime));
        //測試StringBuilder的運行效率
        startTime = System.currentTimeMillis();
        for (int i = 0; i < 20000; i++) {
            stringBuilder.append(String.valueOf(i));
        }
        endTime = System.currentTimeMillis();
        System.out.println("StringBuilder的執(zhí)行時間:"+(endTime-startTime));
        //測試String的運行效率
        startTime = System.currentTimeMillis();
        for (int i=0; i < 20000;i++){
            text = text + i;
        }
        endTime = System.currentTimeMillis();
        System.out.println("String的執(zhí)行時間:"+(endTime-startTime));
    }
}

使用原則:

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

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

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

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

StringBuilder的方法使用和StringBuffer一樣。

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

相關文章

  • Spring 中@Validated 分組校驗的使用解析

    Spring 中@Validated 分組校驗的使用解析

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

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

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

    Java使用TarsosDSP庫實現音頻的處理和格式轉換

    在音頻處理領域,Java雖然有原生的音頻處理類庫,但其功能相對基礎,而TarsosDSP是一個強大的開源音頻處理庫,提供了豐富的功能,本文將介紹如何在Java中結合使用TarsosDSP庫,來實現音頻的處理和格式轉換,需要的朋友可以參考下
    2025-04-04
  • SpringBoot集成Eclipse Mosquitto的實現示例

    SpringBoot集成Eclipse Mosquitto的實現示例

    本文主要介紹了SpringBoot集成Eclipse Mosquitto的實現示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-08-08
  • 論java如何通過反射獲得方法真實參數名及擴展研究

    論java如何通過反射獲得方法真實參數名及擴展研究

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

    java同步開篇入門簡單介紹

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

    java實現文件夾解壓和壓縮

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

    詳解Idea中HTTP Client請求測試工具的使用

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

    Java實現日志打印的15條新手建議

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

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

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

最新評論

江都市| 黎城县| 赫章县| 龙海市| 龙南县| 平乡县| 沂水县| 宁强县| 天津市| 乳山市| 合水县| 林甸县| 个旧市| 镇原县| 奉新县| 商河县| 环江| 建湖县| 通城县| 尚志市| 依安县| 东莞市| 鹤壁市| 凤台县| 郎溪县| 休宁县| 游戏| 乌拉特中旗| 北海市| 山阴县| 涪陵区| 射洪县| 弥勒县| 淳安县| 云安县| 观塘区| 水城县| 桦南县| 颍上县| 石渠县| 黄骅市|