• Java String StringBuilder StringBuffer 区别


    1. 三者区别

    1. 速度 StringBuilder > StringBuffer > String
    2. StringBuilder 线程是不安全的,StringBuffer、String 线程是安全的

    1.1 为什么存在速度快慢

    String 为字符串常量,一旦创建控件不可能变更。

    而 StringBuilder 和 StringBuffer 均为字符串变量,而不进行创建和回收的操作,所以速度要比String快很多。

    1.2 为什么说 StringBuffer 线程是安全的

    如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer中很多方法都带有synchronized关键字,所以可以保证线程是安全的,

    1.3 为什么说 StringBuilder 线程是不安全的

    但 StringBuilder 的append方法中没有synchronized关键字,所以不能保证线程安全。

    实际上,StringBuilder 是 StringBuffer 的简化版,在单线程操作中效率更高。

    2. 使用说明

    2.1 示例

    2.1.1 String 示例

    字符串自定义

    String str="字符串";
    

    2.1.2 StringBuffer 示例

    StringBuffer 的创建

    /*StringBuffer 的内部实现采用字符数组,默认数组的长度为16,超过数组大小时
    * 动态扩充的算法是原来长度*2+2
    * 所以当我们与只要添加的数据长度时,建议使用带初始化容量的构造方法,来避免动态扩充的次数
    * 从而提高效率
    * 是线程安全的,两个线程同时用StringBuffer时,排队
    * 所以会影响性能
    */
     StringBuffer sBuffer = new StringBuffer("Buffer示例:");
        sBuffer.append("AA");
        sBuffer.append(".BB");
        sBuffer.append(".CC");
        System.out.println(sBuffer);  
    

    2.1.3 StringBuilder 示例

    JDK 5.0 中引入 StringBuilder,前身就是 StringBuffer,不支持多线程,如果是单线程就使用 StringBuilder 如果是多线程就使用 StringBuffer

     StringBuilder sb = new StringBuilder("StringBuilder 示例");
        sb.append("AA");
        sb.append(".BB");
        sb.append(".CC");
        System.out.println(sb);  
    

    2.2 应用场景

    1. String 应用与较少字符串
    2. StringBuilder 适用于单线程下在字符缓冲区进行大量操作的情况
    3. StringBuffer 适用于多线程下的字符缓冲进行大量操作的情况
  • 相关阅读:
    【网络爬虫】【python】网络爬虫(五):scrapy爬虫初探——爬取网页及选择器
    AndroidStudio的transformDexArchiveWithExternalLibsDexMergerForDebug报错解决方案
    SQL笔记
    基尼系数
    搜索评价指标——NDCG
    Bayes' theorem (贝叶斯定理)
    itembase协同过滤的详细介绍
    线性回归

    指标、统计和分布
  • 原文地址:https://www.cnblogs.com/fishpro/p/java-string-stringbuilder-stringbuffer.html
Copyright © 2020-2023  润新知