【基础】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。


目录
打赏
0
0
0
0
7
分享
相关文章
|
6天前
|
课时14:Java数据类型划分(初见String类)
课时14介绍Java数据类型,重点初见String类。通过三个范例讲解:观察String型变量、"+"操作符的使用问题及转义字符的应用。String不是基本数据类型而是引用类型,但使用方式类似基本类型。课程涵盖字符串连接、数学运算与字符串混合使用时的注意事项以及常用转义字符的用法。
课时11:综合实战:简单Java类
本次分享的主题是综合实战:简单 Java 类。主要分为两个部分: 1.简单 Java 类的含义 2.简单 Java 类的开发
|
7天前
|
Java代码结构解析:类、方法、主函数(1分钟解剖室)
### Java代码结构简介 掌握Java代码结构如同拥有程序世界的建筑蓝图,类、方法和主函数构成“黄金三角”。类是独立的容器,承载成员变量和方法;方法实现特定功能,参数控制输入环境;主函数是程序入口。常见错误包括类名与文件名不匹配、忘记static修饰符和花括号未闭合。通过实战案例学习电商系统、游戏角色控制和物联网设备监控,理解类的作用、方法类型和主函数任务,避免典型错误,逐步提升编程能力。 **脑图速记法**:类如太空站,方法即舱段;main是发射台,static不能换;文件名对仗,括号要成双;参数是坐标,void不返航。
28 5
课时44:String类对象两种实例化方式比较
本次课程的主要讨论了两种处理模式在Java程序中的应用,直接赋值和构造方法实例化。此外,还讨论了字符串池的概念,指出在Java程序的底层,DOM提供了专门的字符串池,用于存储和查找字符串。 1.直接赋值的对象化模式 2.字符串池的概念 3.构造方法实例化
课时37:综合实战:数据表与简单Java类映射转换
今天我分享的是数据表与简单 Java 类映射转换,主要分为以下四部分。 1. 映射关系基础 2. 映射步骤方法 3. 项目对象配置 4. 数据获取与调试
JAVA泛型类的使用(二)
接上一篇继续介绍Java泛型的高级特性。3. **编译时类型检查**:尽管运行时发生类型擦除,编译器会在编译阶段进行严格类型检查,并允许通过`extends`关键字对类型参数进行约束,确保类型安全。4. **桥方法**:为保证多态性,编译器会生成桥方法以处理类型擦除带来的问题。5. **运行时获取泛型信息**:虽然泛型信息在运行时被擦除,但可通过反射机制部分恢复这些信息,例如使用`ParameterizedType`来获取泛型参数的实际类型。
JAVA泛型类的使用(一)
Java 泛型类是 JDK 5.0 引入的重要特性,提供编译时类型安全检测,增强代码可读性和可维护性。通过定义泛型类如 `Box<T>`,允许使用类型参数。其核心原理是类型擦除,即编译时将泛型类型替换为边界类型(通常是 Object),确保与旧版本兼容并优化性能。例如,`Box<T>` 编译后变为 `Box<Object>`,从而实现无缝交互和减少内存开销。
|
6月前
|
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
65 0
java基础(13)String类
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
124 2
|
5月前
|
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
本文深入探讨了Java中方法参数的传递机制,包括值传递和引用传递的区别,以及String类对象的不可变性。通过详细讲解和示例代码,帮助读者理解参数传递的内部原理,并掌握在实际编程中正确处理参数传递的方法。关键词:Java, 方法参数传递, 值传递, 引用传递, String不可变性。
105 1
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性

热门文章

最新文章