Java StringBuffer和StringBuilder类

简介: Java StringBuffer和StringBuilder类

由于String的不可更改特性,为了方便字符串的修改,Java中又提供StringBuilder和StringBuffer类。与String不同的是,StringBuffer和StringBuilder是对字符串本身进行修改,并且不产生新的对象,而String是产生新的字符串进行修改。

StringBuilder常用方法

由于StringBuffer的方法和StringBuilder方法大部分是相同的,所以我们在这就先介绍StringBuilder;

image.png

public static void main(String[] args) {
  StringBuilder sb1 = new StringBuilder("Hello");
  StringBuilder sb2 = sb1;
  sb1.append(' '); // Hello
  sb1.append("world"); // Hello world
  sb1.append(123); // Hello world123
  System.out.println(sb1); // Hello world123
  System.out.println(sb1 == sb2); // true
  System.out.println(sb1.charAt(0)); // 获取0号位上的字符 H
  System.out.println(sb1.length()); // 获取字符串的有效长度14
  System.out.println(sb1.capacity()); // 获取底层数组的总大小
  sb1.setCharAt(0, 'h'); // 设置任意位置的字符 hello world123
  sb1.insert(0, "Yes"); // Yeshello world123
  System.out.println(sb1);
  System.out.println(sb1.indexOf("hello")); // 获取Hello第一次出现的位置
  System.out.println(sb1.lastIndexOf("hello")); // 获取hello最后一次出现的位置
  sb1.deleteCharAt(0); // 删除首字符
  sb1.delete(0,5); // 删除[0, 5)范围内的字符
  String str = sb1.substring(0, 5); // 截取[0, 5)区间中的字符以String的方式返回
  System.out.println(str);
  sb1.reverse(); // 字符串逆转
  str = sb1.toString(); // 将StringBuffer以String的方式返回
  System.out.println(str);
}

StringBuilder sb1 = new StringBuilder(“hello”);

sb1.append(’ ');

sb1.append(“world”);

sb1.append(123);

StringBuilder sb2 = sb1;

System.out.println(sb1 == sb2);

==比较的是:是否引用同一个对象

设置任意位置的字符

sb1.setCharAt(0, ‘h’);

sb1.insert(0, “Yes”);

删除首字符
sb1.deleteCharAt(0);

删除[0, 5)范围内的字符

sb1.delete(0,5);

截取[0, 5)区间中的字符以String的方式返回
String str = sb1.substring(0, 5);
System.out.println(str);

字符串逆转

sb1.reverse();

从上述例子可以看出:String和StringBuilder最大的区别在于String的内容无法修改,而StringBuilder的内容可以修改。频繁修改字符串的情况考虑使用StringBuilder。

注意:String和StringBuilder类不能直接转换。如果要想互相转换,可以采用如下原则:

1.String变为StringBuilder: 利用StringBuilder的构造方法或append()方法

2.StringBuilder变为String: 调用toString()方法。

String、StringBuffer、StringBuilder的区别

1.String的内容不可修改,StringBuffer与StringBuilder的内容可以修改.

2.StringBuffer与StringBuilder大部分功能是相似的

3.StringBuffer采用同步处理,属于线程安全操作;而StringBuilder未采用同步处理,属于线程不安全操作

目录
相关文章
|
6天前
|
Java
【Java】Math、System、RunTime、BigDecimal类常用方法
【Java】Math、System、RunTime、BigDecimal类常用方法
|
4天前
|
安全 Java API
16 个最常用的 Java 实用程序类
【8月更文挑战第16天】
15 1
16 个最常用的 Java 实用程序类
|
4天前
|
前端开发 Java
成功解决:java.lang.String cannot be cast to java.lang.Integer
这篇文章记录了作者在使用Axios二次封装时遇到的一个Java类型转换问题,即前端传递的字符串参数不能直接转换为Integer类型,文章提供了正确的转换方法来解决这个问题。
成功解决:java.lang.String cannot be cast to java.lang.Integer
|
2天前
|
SQL Java Apache
实时计算 Flink版操作报错合集之使用parquet时,怎么解决报错:无法访问到java.uti.Arrays$ArrayList类的私有字段
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
3天前
|
安全
String,Stringbuffer,StringBuilder的区别
【8月更文挑战第16天】String,Stringbuffer,StringBuilder的区别
11 2
|
5天前
|
Oracle 安全 Java
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
|
6天前
|
设计模式 人工智能 Java
Java 如何使用单例类
Java 如何使用单例类
5 1
|
1天前
|
缓存 安全 Java
【揭秘】String vs StringBuilder vs StringBuffer:三大字符串类的秘密较量!你真的知道何时该用哪个吗?
【8月更文挑战第19天】探讨Java中`String`、`StringBuilder`与`StringBuffer`的区别及应用场景。`String`不可变,适合做哈希表键或多线程共享。`StringBuilder`支持动态修改字符串,适用于单线程环境以提高性能。`StringBuffer`与`StringBuilder`功能相似,但线程安全。示例代码展示各类型的基本用法。选择哪种类型取决于具体需求和性能考量。
|
6天前
|
Java API
【Java】Object、Objects、包装类、StringBuilder、StringJoiner
【Java】Object、Objects、包装类、StringBuilder、StringJoiner
|
2月前
|
Java UED
Java中String强转int:一种常见的错误和解决方法
在Java中将非数字字符串转换为整数会导致`NumberFormatException`。要解决这个问题,可以使用`try-catch`捕获异常,正则表达式验证数字格式,或利用异常信息提供错误提示。例如,`Integer.parseInt()`会因遇到非数字字符如`"123abc"`而抛出异常,但通过异常处理或正则`\\d+`可确保安全转换。记得在编程时避免直接强转,以防止程序异常中断。