JAVA中的StringBuilder和StringBuffer适用的场景是什么

JAVA中的StringBuilder和StringBuffer适用的场景:StringBuilder 一般使用在方法内部来完成类似 + 功能,因为是线程不安全的,所以用完以后可以丢弃。StringBuffer 主要用在全局变量中。

JAVA中的StringBuilder和StringBuffer适用的场景是什么-Worktile社区

一、StringBuffer

字符串变量(Synchronized,即线程安全)。如果要频繁对字符串内容进行修改,出于效率考虑较好使用 StringBuffer,如果想转成 String 类型,可以调用 StringBuffer 的 toString() 方法。

二、StringBuilder

字符串变量(非线程安全)。在内部,StringBuilder 对象被当作是一个包含字符序列的变长数组。java.lang.StringBuilder 是一个可变的字符序列,是 JDK5.0 新增的。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。

三、使用策略

1、基本原则:如果要操作少量的数据,用String ;单线程操作大量数据,用StringBuilder ;多线程操作大量数据,用StringBuffer。

2、不要使用String类的”+”来进行频繁的拼接,因为那样的性能极差的,应该使用StringBuffer或StringBuilder类,这在Java的优化上是一条比较重要的原则。

3、为了获得更好的性能,在构造 StringBuffer 或 StringBuilder 时应尽可能指定它们的容量。当然,如果你操作的字符串长度(length)不超过 16 个字符就不用了,当不指定容量(capacity)时默认构造一个容量为16的对象。不指定容量会显著降低性能。

4、StringBuilder 一般使用在方法内部来完成类似 + 功能,因为是线程不安全的,所以用完以后可以丢弃。StringBuffer 主要用在全局变量中。

5、相同情况下使用 StringBuilder 相比使用 StringBuffer 仅能获得 10%~15% 左右的性能提升,但却要冒多线程不安全的风险。而在现实的模块化编程中,负责某一模块的程序员不一定能清晰地判断该模块是否会放入多线程的环境中运行,因此:除非确定系统的瓶颈是在 StringBuffer 上,并且确定你的模块不会运行在多线程模式下,才可以采用 StringBuilder;否则还是用 StringBuffer。

延伸阅读

什么是Java String

 字符串常量。String 是不可变的对象, 因此在每次对 String 类型进行改变的时候,都会生成一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串较好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,性能就会降低。

文章标题:JAVA中的StringBuilder和StringBuffer适用的场景是什么,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37562

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月9日 下午2:12
下一篇 2023年2月9日 下午2:37

相关推荐

  • 程序员都是用什么编程软件

    程序员主要使用的编程软件有 1、集成开发环境(IDE)、2、代码编辑器、3、版本控制系统、4、数据库管理工具。 其中,集成开发环境(IDE)是最核心的工具,因为它提供了编码、调试、编译以及项目管理等一系列功能,极大地提高了开发效率。IDE通常是针对特定的编程语言或开发平台设计的,比如 Intelli…

    2024年4月27日
    3700
  • php编程学习什么

    PHP IS A POPULAR PROGRAMMING LANGUAGE MAINLY USED FOR WEB DEVELOPMENT. TO BECOME PROFICIENT IN PHP PROGRAMMING, ONE SHOULD FOCUS ON SEVERAL KEY AREAS:…

    2024年5月2日
    1500
  • 摄影测量学什么编程

    摄影测量学中应用编程通常包括以下几个方面:1、自动特征提取、2、空间数据处理、3、图像配准、4、三维建模及可视化。在这些应用中,图像配准技术尤其重要。它涉及使用算法识别不同图像中相同的特征点,并对它们进行配准,以便进行后续的测量与分析。这个过程通常需要精确的算法和高效的代码实现,以确保数据的准确性和…

    2024年4月27日
    3600
  • 什么是c 编程语言

    C编程语言是一种通用的、高效的编程语言,它允许直接操作内存和硬件,广泛用于系统软件与应用软件开发。 其中,C语言的直接内存访问以及其运行效率是其核心特点之一。它的设计简洁,提供了许多控制结构,如条件语句、循环语句以及函数等。最主要的,它为软件提供了硬件层面的控制能力,这使得它成为开发系统软件的首选语…

    2024年4月27日
    5500
  • 学计算机编程需要什么软件

    学习计算机编程需要3类主要软件:1、文本编辑器;2、编译器或解释器;3、集成开发环境(IDE)。 文本编辑器用于编写和编辑代码,它们可以是简单的,如Notepad,也可以是功能丰富的,如Sublime Text或Visual Studio Code,后者提供语法高亮、代码提示等高级功能。对初学者而言…

    2024年4月29日
    3400
  • 西门子s5用什么编程

    西门子S5 PLC主要采用了阶梯逻辑图(Ladder Logic)、语句表(Statement List, STL)、功能块图(Function Block Diagram, FBD)这三种编程语言。在这三种语言中,阶梯逻辑图因其形象直观,最类似于电气原理图,而得到广泛使用。将电气控制理论转化为可编…

    2024年4月29日
    3800
  • 天才使用的编程语言是什么

    在所有编程语言中,Python、Java、C++ 是天才们最频繁使用的三种语言。Python 以其简洁的语法和强大的库生态系统广受赞誉。它常被用于快速原型开发和各种高级编程任务,尤其是在人工智能和数据科学领域。Python 的设计哲学强调代码的可读性,拥有清晰的语法结构,这极大减低了编码过程的复杂度…

    2024年4月27日
    3400
  • 空洞卷积(dilated convolution)是什么

    在深度学习中,尤其是图像处理和语音处理领域,不同种类的卷积技术扮演着至关重要的角色。空洞卷积,也被称为dilated convolution,是其中的一种。需要考虑以下几个方面:1、基本定义;2、操作方式;3、应用场景;4、与普通卷积的比较;5、优势与局限;6、主要应用。 1、基本定义 空洞卷积:通…

    2023年7月23日
    74100
  • 什么是编程gui

    编程GUI是创建图形用户界面的过程,让软件应用更加直观易用。其中一点值得详细讨论的是,它使得程序与用户之间的交互更加直观和高效。通过图形化界面,用户可以通过点击按钮、选择下拉菜单等形式与程序交互,大大减少了学习成本和使用复杂度。 一、GUI概述 图形用户界面(Graphic User Interfa…

    2024年5月2日
    3000
  • 如何团队管理

    团队管理要做到:1、确定团队目标;2、确定团队成员角色;3、建立有效的沟通机制;4、提高团队成员的工作积极性;5、监督和控制团队工作进展。确定团队目标是团队管理的第一步,它需要明确团队的使命、愿景和目标。 1、确定团队目标 确定团队目标是团队管理的第一步,它需要明确团队的使命、愿景和目标。在设定团队…

    2023年2月26日
    41200

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部