zoukankan      html  css  js  c++  java
  • 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 适用于多线程下的字符缓冲进行大量操作的情况
  • 相关阅读:
    软件开发流程
    计算机与生命体的类比
    cnBeta过期评论查看器,再次更新
    用Ruby写的离线浏览代理服务器,重要更新
    计算机编程常用词汇
    网站创意:商品知识库
    Node.JS进行简单新技术分析及环境搭建
    MongoDB (0)写在前面
    基于CXF Java 搭建Web Service (Restful Web Service与基于SOAP的Web Service混合方案)
    MongoDB (5)不仅仅是数据库
  • 原文地址:https://www.cnblogs.com/fishpro/p/java-string-stringbuilder-stringbuffer.html
Copyright © 2011-2022 走看看