首页 > 其他分享 > StringBuilder和 StringBuffer的用法

StringBuilder和 StringBuffer的用法

时间:2022-12-16 20:44:06浏览次数:39  
标签:String StringBuilder 用法 StringBuffer 字符串 hello append

  • 从String类说起
  • StringBuilder
  • StringBuffer

从String说起

String是java定义的一个final类,不能被继承。也是我们日常生活中最常见到的类之一,可以实现对字符串的各种操作,但是但是他的对象不可变这个特性在某些情况下会带来很大的性能问题

看下面的一个过程:字符串的拼接

String str="";
        for(int i=0;i<100;i++){
            str+="hello";
        }

关于字符串的拼接是一个很常见的操作,如果在我们的开发中有类似上述的过程需要多次拼接字符串,由于字符串不可变,每次拼接将会创建一个新的对象,所以此过程最少会新创建100的对象,这将会给我们程序的性能带来致命的影响

StringBuilder类

为了解决类似场景的问题,java提供了StringBuilder类

可以把该类看成是一个容器,其最大的特点是里面的内容(对象)是可变的,表现为每次进行操作后返回的是同一个StringBuilder对象,而不会像String一样新创建一个对象,这样就解决了字符串大量拼接情景下所带来的性能问题

  • 下面的图可以直观的看出来进行一系列操作后没有创建新的对象返回的是同一个对象

  • 常用方法的举例


package Test;
//测试StringBuilder类的常用方法
public class StringBuilderTest {
    public static void main(String[] args) {
        //空参构造方法
        StringBuffer sb1=new StringBuffer();//容器里什么也没放
        //单参构造
        StringBuilder sb2=new StringBuilder("hello");//容器里面放了hello
        System.out.println(sb2);//hello
        //追加
        StringBuilder sb3=new StringBuilder();
        sb3.append("hello").append(123).append('c').append(23.4);//append重载多种类型
        System.out.println(sb3);//hello123c23.4
        //反转
        StringBuilder sb4=new StringBuilder("hello world");
        sb4.reverse();
        System.out.println(sb4);//dlrow olleh
        //toString
    //将StringBuilder 转化成字符串进行输出   
    }
}

  • StringBuilder方法特点
    1.带有对象可变特性
    2.大多数方法和String的方法名相同
    2.很多方法都进行了大量的重载支持所有数据类型的处理

StringBuffer类

StringBuffer类的方法和用法和StringBuilder类相同,但在相同的情况下StringBuffer的运行速度更快

StringBuilder和StringBuffer的不同

通过查看StringBuffer的源码可以发现,他的所有操作方法都使用了synchronized关键字修饰,说明StringBuffer采用了线程同步处理机制,而StringBuilder类并没有这样处理,说明StringBuilder是线程不安全的,而StringBuffer是线程安全的

推荐使用建议

API文档(对StringBuilder的解释): 此类设计用作StringBuffer替代品,用于单个线程使用字符串缓冲区的位置(通常情况下)。 在可能的情况下,建议使用此类优先于StringBuffer因为在大多数实现中它会更快。

1.在进行较少的操作时建议使用String类,操作简单
2.在其余情况下建议使用StringBuffer类,比StringBuilder更安全还更快(上文说的哪一种情况除外)

标签:String,StringBuilder,用法,StringBuffer,字符串,hello,append
From: https://www.cnblogs.com/swtaa/p/16988073.html

相关文章

  • SQL语句的REVERSE函数,关键字用法
    1.函数。select reverse(123456)fromdual;select reverse('123456') fromdual;2.关键字。declarevnumber;cnumber;beginv:=100;forcinreverse......
  • BIO和NIO的基本用法和API讲解
    1BIO可以理解为BlockingIO是同步阻塞的IO,也就是说,当有多个请求过来的时候,请求会呈现为链状结构,遵循先进先出的原则 1.1单线程版本1.1.1服务端//服务端单......
  • String、StringBuffer、StringBuilder 有什么区别?
    String是Java语言非常基础和重要的类,提供了构造和管理字符串的各种基本逻辑。它是典型的Immutable类,被声明成为finalclass,所有属性也都是final的。也由于它的不可......
  • 结构体定义 typedef struct 用法详解和用法小结
    typedef可以声明新的类型名来代替已有的类型名,但却不能增加新的类型。typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型......
  • ElasticSearch的基本用法与集群搭建 good
    一、简介ElasticSearch和Solr都是基于Lucene的搜索引擎,不过ElasticSearch天生支持分布式,而Solr是4.0版本后的SolrCloud才是分布式版本,Solr的分布式支持需要ZooKeeper的支持......
  • Comparator与Comparable用法与区别
    一、概述。  Comparator和Comparable两者都属于集合框架的一部分,都是用来在对象之间进行比较的,但两者又有些许的不同,我们先通过一个例子来看一下他们的区别,然后再分别学习......
  • Python时间处理常用模块及用法详解!
    Python中最常用的三个处理时间的模块为:time模块、datetime模块和calendar模块,本文为大家详细介绍一下这三个时间处理模块以及它们的基础用法,希望对你们有帮助。1.t......
  • sql中substr()函数用法详细
    注意:在mysql数据库中,SUBSTR函数是用来截取数据库某一列字段中的一部分,在各个数据库的函数名称不一样。功能:SUBSTR函数用来截取数据库某一列字段中的一部分。在各个数据库......
  • Delphi(lazarus) TStringHelper用法详解(转载)
    Delphi(lazarus)TStringHelper用法详解DelphiXE4的TStringHelper,对操作字符串进一步带来更多的方法,使用这些方法才可以实现跨平台的代码。Delphi引用单元:System.Sys......
  • 琢磨下PID的用法
    PID的目的:是为了使系统从当前值更快更稳的变到设定值。比如,温度控制,当前是20°,想让它变成100°,这里有个前提条件是要确保整个升温过程中温度都不能超过100°。简单方法,可......