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未采用同步处理,属于线程不安全操作

目录
相关文章
|
1天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
|
3天前
|
安全
String、StringBuffer、StringBuilder的区别
String 由 char[] 数组构成,使用了 final 修饰,对 String 进行改变时每次都会新生成一个 String 对象,然后把指针指向新的引用对象。 StringBuffer可变并且线程安全;有一定缓冲区容量,字符串大小没超过容量,不会重新分配新的容量,适合多线程操作字符串; StringBuiler可变并且线程不安全。速度比StringBuffer更快,适合单线程操作字符串。 操作少量字符数据用 String;单线程操作大量数据用 StringBuilder;多线程操作大量数据用 StringBuffer
|
19天前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
41 17
|
10天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
15天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
55 4
|
15天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
34 2
|
20天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
3月前
|
安全 Java API
Java系类 之 String、StringBuffer和StringBuilder类的区别
这篇文章讨论了Java中`String`、`StringBuffer`和`StringBuilder`三个类的区别,其中`String`是不可变的,而`StringBuffer`是线程安全的可变字符串类,`StringBuilder`是非线程安全的可变字符串类,通常在单线程环境下性能更优。
Java系类 之 String、StringBuffer和StringBuilder类的区别
|
3月前
|
安全 Java
【Java基础面试二十七】、说一说StringBuffer和StringBuilder有什么区别
这篇文章介绍了Java中StringBuffer和StringBuilder的区别:StringBuffer是线程安全的,而StringBuilder是非线程安全的,因此在单线程环境下优先推荐使用StringBuilder以获得更好的性能。
|
3月前
|
API C# 开发者
WPF图形绘制大师指南:GDI+与Direct2D完美融合,带你玩转高性能图形处理秘籍!
【8月更文挑战第31天】GDI+与Direct2D的结合为WPF图形绘制提供了强大的工具集。通过合理地使用这两种技术,开发者可以创造出性能优异且视觉效果丰富的WPF应用程序。在实际应用中,开发者应根据项目需求和技术背景,权衡利弊,选择最合适的技术方案。
150 0

热门文章

最新文章

下一篇
无影云桌面