java String、StringBuilder和StringBuffer的区别详解

 更新时间:2020年01月21日 09:27:57   作者:你若安好便是晴天  
这篇文章主要介绍了java String、StringBuilder和StringBuffer的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1.共同点:

三者都是字符串类。StringBuilder和StringBuffer都是继承AbstractStringBuilder类,存储字符串都是使用数组进行存储的。

2.区别:

a. String 类存储字符串使用的数组被final进行修饰了,当对String对象进行增加修改字符时,都需要重新new一个字符数组,将原来的值拷贝到新的字符数组中,所以当字符串的值需要经常修改的时候就需要考虑用StringBuilder或StringBuffer来进行处理了。

public final class String implements java.io.Serializable, Comparable<String>, CharSequence {
  private final char value[];
}

b.StringBuffer和StringBuilder也是使用字符数组来进行存储字符串的,但没有使用final进行修饰;StringBuffer定义的方法都加入了synchronized修饰,也就是说StringBuffer类方法都是线程安全的,而StringBuilder方法没有被修饰,两者常用的方法是append()。

3.使用场景:

  • 当字符串值不会变化时,考虑使用String
  • 当字符串的值多变的时候,考虑使用StringBuilder或者StringBuffer
  • 当要求线程安全时候,考虑使用StringBuffer。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found的解决方案(亲测可用)

    Plugin ‘org.springframework.boot:spring-boot-maven-plug

    这篇文章给大家介绍了Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found的解决方案,亲测可用,文中给出了两种解决方法,需要的朋友可以参考下
    2024-01-01
  • java中实体类实现时间日期自动转换方式

    java中实体类实现时间日期自动转换方式

    这篇文章主要介绍了java中实体类实现时间日期自动转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • 解析探秘fescar分布式事务实现原理

    解析探秘fescar分布式事务实现原理

    这篇文章主要为大家解析探秘fescar分布式事务的实现原理,fescar的txc模型实现非常有研究的价值,所以今天我们来好好翻一翻fescar项目的代码
    2022-02-02
  • Java Spring框架简介与Spring IOC详解

    Java Spring框架简介与Spring IOC详解

    Spring 框架是一个轻量级的解决方案,可以一站式地构建企业级应用。它是为了解决 企业应用开发的复杂性而创建的。Spring 使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情。IOC 是 Inversion of Control 的缩写,多数书籍翻译成控制反转
    2021-09-09
  • dubbo服务引用之创建Invoker流程详解

    dubbo服务引用之创建Invoker流程详解

    这篇文章主要为大家介绍了dubbo服务引用二之创建Invoker流程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 深入浅析SPI机制在JDK与Spring Boot中的应用

    深入浅析SPI机制在JDK与Spring Boot中的应用

    SPI是一种使软件框架或库更加模块化、可扩展和可维护的有效方法。通过遵循“开闭原则”, SPI 确保了系统的稳定性和灵活性,从而满足了不断变化的业务需求,这篇文章主要介绍了SPI机制在JDK与Spring Boot中的应用,需要的朋友可以参考下
    2023-09-09
  • MyBatis-Plus如何最优雅最简洁地完成数据库操作

    MyBatis-Plus如何最优雅最简洁地完成数据库操作

    Mybatis-Plus是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生,下面这篇文章主要给大家介绍了关于MyBatis-Plus如何最优雅最简洁地完成数据库操作的相关资料,需要的朋友可以参考下
    2022-03-03
  • Java如何获取HttpServletRequest请求参数

    Java如何获取HttpServletRequest请求参数

    我们常需要接口接收第三方推送的数据,由于第三方可能不具备开发能力,我们需要自行解析推送的数据格式,通过HttpServletRequest,我们可以解析字符串、JSON、XML以及文件等多种数据类型,本文介绍了如何在Java中使用HttpServletRequest获取请求参数,感兴趣的朋友一起看看吧
    2024-11-11
  • Spring Security实现分布式系统授权方案详解

    Spring Security实现分布式系统授权方案详解

    这篇文章主要介绍了Spring Security实现分布式系统授权,本节完成注册中心的搭建,注册中心采用Eureka,本文通过示例代码图文相结合给大家介绍的非常详细,需要的朋友可以参考下
    2022-02-02
  • Java 日志打印的15个好建议

    Java 日志打印的15个好建议

    这篇文章主要介绍了Java日志打印的15个好建议,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-09-09

最新评论