StringBuffer与StringBuilder的区别

2023-11-05

StringBuffer与StringBuilder的区别

image-20210923192119853

一、String,StringBuffer与StringBuilder

String字符串常量

String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间。

StringBuffer与StringBuilder是字符串变量

StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象

二、StringBuffer与StringBuilder的区别

StringBuffer:可变字符串、效率低、线程安全;

StringBuilder:可变字符序列、效率高、线程不安全;

StringBuffer(JDK1.0)

/*StringBuffer:字符串变量(Synchronized,即线程安全)。
如果要频繁对字符串内容进行修改,考虑最好使用StringBuffer,如果想转成String类型,可以调用StringBuffer的toString()方法。
StringBuffer 上的主要操作是 append 和 insert 方法
可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端
insert 方法则在指定的点添加字符。
例如,如果 x 引用一个当前内容是“start”的字符串缓冲区对象,则此方法调用 x.append("le") 会使字符串缓冲区包含“startle”,而 x.insert(4, "le") 将更改字符串缓冲区,使之包含“starlet”。
*/

StringBuilder(JDK5.0)

/*StringBuilder:字符串变量(非线程安全)。在内部,StringBuilder对象被当作是一个包含字符序列的变长数组。
其构造方法如下:
构造方法 描述
StringBuilder() 创建一个容量为16的StringBuilder对象(16个空元素)
StringBuilder(CharSequence cs)  创建一个包含cs的StringBuilder对象,末尾附加16个空元素
StringBuilder(int initCapacity) 创建一个容量为initCapacity的StringBuilder对象
StringBuilder(String s) 创建一个包含s的StringBuilder对象,末尾附加16个空元素
在大部分情况下,StringBuilder > StringBuffer
*/
构造方法 描述
StringBuilder() 创建一个容量为16的StringBuilder对象(16个空元素)
StringBuilder(CharSequence cs) 创建一个包含cs的StringBuilder对象,末尾附加16个空元素
StringBuilder(int initCapacity) 创建一个容量为initCapacity的StringBuilder对象
StringBuilder(String s) 创建一个包含s的StringBuilder对象,末尾附加16个空元素

StringBuffer

/*每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象并改变对象引用。所以多数情况下推荐使用 StringBuffer ,特别是字符串对象经常改变的情况下。
*/

使用原则:

如果要操作少量的数据,用String ;

单线程操作大量数据,用StringBuilder ;

多线程操作大量数据,用StringBuffer。

不要使用String类的"+"来进行频繁的拼接,因为那样的性能极差的,应该使用StringBuffer或StringBuilder类
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

StringBuffer与StringBuilder的区别 的相关文章

随机推荐

  • Vue集成WangEditor的初次使用

    作为一个菜鸟表示真的很难吖 这个插件就一个字 小巧 好用 首先我是Vue springboot的前后端分离 所以在查的时候结合文档和网上的一些例子 在此感谢帮助到我的大佬们 因为富文本编辑框之后会在很多地方用到 所以我采用了把WangEdi
  • Ctrl-labs CEO:脑机接口突破不断,五年内或可实现商用

    转自 https baijiahao baidu com s id 1650948598615192740 wfr spider for pc
  • Mysql-锁定读(Locking Reads)

    关于读锁 mysql官方文档地址 https dev mysql com doc refman 5 7 en innodb locking reads html与一致性非锁定读 普通读 快照读 对应的就是锁定读 锁定读的用处很多 首先先说下
  • js 高级算法 - 动态规划

    主要是看了 数据结构与算法 有所感悟 虽然这本书被挺多人诟病的 说这有漏洞那有漏洞 但并不妨碍我们从中学习知识 其实像在我们前端的开发中 用到的高级算法并不多 大部分情况if语句 for语句 swith语句等等 就可以解决了 稍微复杂的 可
  • DestroyList() 和ClearList() 一个使用引用,一个直接传参

    在高一凡编写的算法书P20页写着 销毁链表时用了引用 void DestroyList LinkList L LinkList q while L q L gt next free L L q 清空链表没有使用引用 void ClearLi
  • element UI 图片上传/文件上传

  • 2021-04-16

    喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事 你们一定都觉得这猴子太闹腾了 其实你们是有所不知 悟空是在研究一个数学问题 什么问题 他研究的问题是蟠桃一共有多少个 不过 到最后 他还是没能解决这个难题 呵呵 当时的情况是这样的 第一天悟空吃
  • yarn的常用命令以及与npm的对比

    yarn安装 在yarn的官网下载yarn并安装或者 npm i yarn g 查看版本 Yarn v 1 初始化一个新项目 yarn init 与 npm init 一样通过交互式会话创建一个 package json yarn init
  • 实施工程师的必修课(一)-----项目启动前的知识整理学习-工作流程

    项目启动前的知识整理学习 工作流程 第一步 项目启动 第二步 调研开始 第三步 需求总结 第四步 数据和材料的收集 第五步 需求调研结束 第六步 上线试运行 第七步 项目验收 以lims系统为例 实验室信息管理系统 LIMS Laborat
  • MySQL存储原理

    MySQL中的数据组织是以页为单位的 每一页中的信息包括 页头 记录页面的控制信息 共占56字节 包括页的左右兄弟页面指针 用来连接相邻的页面 页面空间使用情况等 虚记录 最大虚记录 比页内最大主键还大 最小虚记录 比页内最小主键还小 记录
  • chatgpt论文润色

    https github com binary husky chatgpt academic
  • 开源库nothings/stb的介绍及使用(图像方面)

    GitHub上有个开源的stb库 Star数已过万 地址为https github com nothings stb 为何叫stb 是用的作者名字的缩写Sean T Barrett 此库仅包含头文件 除stretchy buffer h外
  • 佛祖保佑 永不宕机 永无BUG C语言 串口打印

    字符串如下 char log oo0oo r n o8888888o r n 88 88 r n r n 0 0 r n r n r n
  • ChromeDriver最新版(116.x及最新)下载途径分享

    首先查看version 在地址栏输入chrome version 最新版 官方地址 https googlechromelabs github io chrome for testing 选择合适的下载即可 Old 官网 https chr
  • 关于postman使用技巧

    一 get方法 只在此显示下有token的查询方法 一般的get查询直接浏览器地址即可 二 post请求 1 在headers中设置下Content Type为application json 2 在Body中输入正确的json格式即可 三
  • 从零实现DevOps(二):Centos7操作系统-环境变量配置(JDK、Maven、Node)

    1 JDK安装并配置环境变量 由于Jenkins官网要求 从2 357版本后必须用java11或17才可以运行 java8运行会报错 所以我们直接安装jdk11 1 下载地址 往下拉可以找到Java11 Java Downloads Ora
  • C语言速成指南

    说明一下吧 这篇文章是用于c语言有目的的速成 有点基础的看一看也可以当复习 如果想要真正学好c语言 建议看一下之前写的详细教程 这篇文章会有很多对于考试没有多大帮助的东西被忽略掉 临近期末祝大家考试顺利 我也会不断完善这篇文章的 欢迎各路大
  • SQLMap 注入 DVWA实战

    一 low级别 1 进入dvwa界面输入1 点击Submit 得到链接 http localhost dvwa master vulnerabilities sqli id 1 Submit Submit 2 我们用sqlmap进行爆破 s
  • springboot 配置多个请求服务代理

    springboot 配置服务代理 有时候 我们可能有下边这样的需求 即 针对于分布式服务 我们会有多种业务接口服务 但是服务器上可能只要求开放一个服务的端口 比如上图的restA项目端口是对外开放的 但是restB项目端口并未对外开放 这
  • StringBuffer与StringBuilder的区别

    StringBuffer与StringBuilder的区别 一 String StringBuffer与StringBuilder String字符串常量 String的值是不可变的 这就导致每次对String的操作都会生成新的String