【基础】Java的StringBuffer 和 StringBuilder 类操作,你学会了吗?

简介: 【基础】Java的StringBuffer 和 StringBuilder 类操作,你学会了吗?

前言


  上一文熟悉了Java的String类操作,本文针对于String类型相似的StringBuffer和 StringBuilder类进行操作。当然,使用StringBuffer和 StringBuilder是对经常进行更新修改而不需要创建新的对象。下面开始介绍。



image.png

image.png


StringBuffer


  StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。


优点


  • 可变长
  • 线程安全的
  • 多线程操作


缺点


  • StringBuffer效率比StringBuilder效率低。


StringBuilder


  StringBuilder是可变类,和线程不安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuilder对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。


优点


  • 可变长
  • 线程不安全的
  • 单线程操作


缺点


  • StringBuilder效率StringBuffer比效率低。


StringBuffer常用方法


append

  append(String s)将指定的字符串追加到此字符序列。


reverse

  reverse()将此字符序列用其反转形式取代。


delete

  delete(int start, int end)移除此序列的子字符串中的字符。


insert(int offset, int i)

  insert(int offset, int i)将 int 参数的字符串表示形式插入此序列中。


insert(int offset, String str)

  insert(int offset, String str)将 str 参数的字符串插入此序列中。


replace(int start, int end, String str)

  replace(int start, int end, String str)使用给定 String 中的字符替换此序列的子字符串中的字符。


StringBuffer常用方法


capacity()

  int capacity()返回当前容量,类型为int值。


charAt(int index)

  char charAt(int index)返回此序列中指定索引处的char值。


ensureCapacity(int minimumCapacity)

  ensureCapacity(int minimumCapacity)确保容量至少等于指定的最小值。


getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

  getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)将字符从此序列复制到目标字符数组 dst,无返回值。


indexOf(String str)

  int indexOf(String str)返回第一次出现的指定子字符串在该字符串中的索引。


indexOf(String str, int fromIndex)

  int indexOf(String str, int fromIndex)从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。


lastIndexOf(String str)

  int lastIndexOf(String str)返回最右边出现的指定子字符串在此字符串中的索引。


lastIndexOf(String str, int fromIndex)

  int lastIndexOf(String str, int fromIndex)返回 String 对象中子字符串最后出现的位置。


length()

  int length()返回长度(字符数)。


setCharAt(int index, char ch)

  void setCharAt(int index, char ch)将给定索引处的字符设置为 ch。


setLength(int newLength)

  void setLength(int newLength)设置字符序列的长度。


subSequence(int start, int end)

  CharSequence subSequence(int start, int end)返回一个新的字符序列,该字符序列是此序列的子序列。


substring(int start)

  String substring(int start)返回一个新的 String,它包含此字符序列当前所包含的字符子序列。


substring(int start, int end)

  String substring(int start, int end)返回一个新的 String,它包含此序列当前所包含的字符子序列。


toString()

  String toString()返回此序列中数据的字符串表示形式。


总结


  • String:不可变字符序列
  • Stringbuffer:可变字符序列、效率低、线程安全
  • String Builder(JDK1.5):可变字符序列、效率高、线程不安全

  Stringbuilder和 String Buffer非常类似,均代表可变的字符序列,而且方法也一样。多次执行这些改变串内容的操作,String会导致大量副本字符串对象存留在内存中,降低效率,如果这样的操作放到循环中,会极大影响程序的性能,建议使用Stringbuilder和 String Buffer。


目录
相关文章
|
5天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
33 3
|
1天前
|
存储 缓存 Java
|
1天前
|
人工智能 安全 Java
Java8 - LocalDateTime时间日期类使用详解
Java8 - LocalDateTime时间日期类使用详解
|
2天前
|
数据采集 前端开发 测试技术
《手把手教你》系列技巧篇(三十一)-java+ selenium自动化测试- Actions的相关操作-番外篇(详解教程)
【4月更文挑战第23天】本文介绍了网页中的滑动验证码的实现原理和自动化测试方法。作者首先提到了网站的反爬虫机制,并表示在本地创建一个没有该机制的网页,然后使用谷歌浏览器进行验证。接着,文章详细讲解了如何使用WebElement的click()方法以及Action类提供的API来模拟鼠标的各种操作,如右击、双击、悬停和拖动。
6 2
|
2天前
|
安全 Java 程序员
|
2天前
|
存储 编解码 算法
Java 的 String StringBuilder StringBuffer(上)
Java 的 String StringBuilder StringBuffer
24 0
|
3天前
|
Web App开发 数据采集 Java
《手把手教你》系列技巧篇(三十)-java+ selenium自动化测试- Actions的相关操作下篇(详解教程)
【4月更文挑战第22天】本文介绍了在测试过程中可能会用到的两个功能:Actions类中的拖拽操作和划取字段操作。拖拽操作包括基本讲解、项目实战、代码设计和参考代码,涉及到鼠标按住元素并将其拖动到另一个元素上或指定位置。划取字段操作则介绍了如何在一段文字中随机选取一部分,包括项目实战、代码设计和参考代码。此外,文章还提到了滑动验证的实现,并提供了相关的代码示例。
31 2
|
3天前
|
Java
Java Class类
Java Class类
8 0
|
Java Android开发
WSDL2Java操作指南
1. 安装JDK1.5, 配置系统环境变量:     下载安装JDK后, 设置环境变量:     JAVA_HOME=C:\Program Files\Java\jdk1.5.0_02     Path=%Path%;%JAVA_HOME%\bin(这里的%Path%指你系统已经有的一系列配置)     CLASSPATH=%JAVA_HOME%\lib  2. 下载axis,
1377 0
|
3天前
|
安全 Java 调度
Java线程:深入理解与实战应用
Java线程:深入理解与实战应用
23 0