当前位置: 首页 > news >正文

Java重修笔记 第三十三天 StringBuffer类、StringBuild类

  • StringBuffer类特性

1. 它父类的char value[]属性不是final的,不再存放在字符串常量池

2. 和String类相比,StringBuffer的更新不用每次都创建新的对象,只有空间不够的时候才会更新地址,效率比较高

  • StringBuild类特性

1. StringBuild类与StringBuffer类的API相互兼容,但是StringBuild类不是线程安全的,如果可能,优先采用效率较高的StringBuild类,例如在字符串缓冲区被单个线程使用的时候

  • StringBuffer和String的相互转换

1. String ---> StringBuffer

String str = "hello";
// String 转 StringBuffer
StringBuffer stringBuffer01 = new StringBuffer(str);
StringBuffer stringBuffer02 = new StringBuffer();
stringBuffer02.append(str);

2. StringBuffer ---> String

// StringBuffer 转 String
StringBuffer stringBuffer = new StringBuffer("123abc");
String s = stringBuffer.toString();
String s1 = new String(stringBuffer);

  • StringBuffer类的常用方法

1. public StringBuffer append(String str)

        将字符串添加进StringBuffer后面

2. public StringBuffer delete(int start, int end)

        删除索引包括start,到不包括end之间的字符串,左开右闭

3. public StringBuffer replace(int start, int end, String str) 

        将从包括start,到不包括end之间的字符串替换为str,左开右闭

4. public int indexOf(String str)

        返回该字符串第一次出现的索引

5. public StringBuffer insert(int dstOffset, CharSequence s)

        在索引dstOffset的位置后面插入s

  • String、StringBuild和StringBuffer的比较

1. String代表不可变字符序列,其内部的value[]字符数组是被final修饰的。 StringBuild和StringBuffer代表可变字符序列,其内部的value[]字符数组没有被final修饰,方法也一样。

2. StringBuild效率最高但线程不安全,StringBuffer效率较高线程安全,String效率最低复用率高。

  • String、StringBuild和StringBuffer的运用场景

1. 如果字符串有大量修改操作,用StringBuild和StringBuffer

2. 如果字符串有大量修改操作,并且单线程的情况用StringBuild

3. 如果字符串有大量修改操作,并且多线程的情况用StringBuffer

4. 如果字符串很少修改,并且被多个对象引用,用String,例如配置信息等

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • jenkins工具配置
  • 谷歌实用Gmail技巧:批量使用多个外贸邮箱技巧
  • 《计算机组成原理》(第3版)第10章 控制单元的设计 复习笔记
  • 聊聊JS中的WebSocket
  • 2024年8月9号(frp)
  • Verilog基础:模块端口(port)定义的语法(2001标准)
  • C++基础编程100题-040 OpenJudge-1.5-01 求平均年龄
  • 大语言模型的简易可扩展增量预训练策略
  • 代码随想录算法训练营day43 | 300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组
  • 水库大坝安全监测:筑起水坝安全防线
  • 搜索最新全国工商信息的软件
  • 【Spark集群部署系列一】Spark local模式介绍和搭建以及使用(内含Linux安装Anaconda)
  • 代码随想录算法训练营第十六天
  • android13 禁用wifi
  • 【单片机】51单片机入门教程(一):深入理解普通IO口与外部中断
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • __proto__ 和 prototype的关系
  • 【css3】浏览器内核及其兼容性
  • CentOS从零开始部署Nodejs项目
  • ES6--对象的扩展
  • iOS 系统授权开发
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • Python - 闭包Closure
  • 初识MongoDB分片
  • 类orAPI - 收藏集 - 掘金
  • 前端
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​插件化DPI在商用WIFI中的价值
  • # .NET Framework中使用命名管道进行进程间通信
  • # 飞书APP集成平台-数字化落地
  • #Java第九次作业--输入输出流和文件操作
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • ${factoryList }后面有空格不影响
  • (12)目标检测_SSD基于pytorch搭建代码
  • (2)空速传感器
  • (C)一些题4
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (新)网络工程师考点串讲与真题详解
  • (转载)Linux网络编程入门
  • (自用)交互协议设计——protobuf序列化
  • **PHP分步表单提交思路(分页表单提交)
  • .net core 6 redis操作类
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET Framework .NET Core与 .NET 的区别
  • .NET 使用 XPath 来读写 XML 文件
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .net知识和学习方法系列(二十一)CLR-枚举
  • [AR Foundation] 人脸检测的流程