关于 StringBuilder 和 StringBuffer 的区别 & 转换

来源:9-10 【可变字符串】高效的可变字符串

张三zzzzzz

2023-07-31

StringBuilderStringBuffer 都是可变的字符串,而且相对与 String 能够更加高效地操作字符串。

想请问下:
- StringBufferStringBuilder 究竟有什么不同呢 ( 兼容性, 线程,安全性等方面 )?如何使用更加地合适?
- StringBufferStringBuilder 怎么 和 String 相互转换?

写回答

1回答

彭彭老师

2023-08-01

StringBuffer是线程安全的,所有方法都加锁同步,所以性能较低;StringBuilder非线程安全,但性能高。所以在实际应用中,少量操作字符串且对线程安全无要求时,考虑使用String类;在多线程应用考虑使用StringBuffer类;单线程中有高效率要求时,考虑使用StringBuilder类。


String转换成StringBuffer/StringBuilder:通过构造方法和append方法;

StringBuffer/StringBuilder转换成String:通过构造方法和toString方法。

String转换成StringBuilder:

// 创建String对象
String str = "hello";
System.out.println(str); 

// 方式1:构造方法
StringBuilder builder1 = new StringBuilder(str);

// 方式2:通过append方法
StringBuilder builder2 = new StringBuilder();
builder2.append(str);

StringBuffer转换成String

// 创建StringBuffer对象
StringBuffer buffer1 = new StringBuffer(str);

// 方式1:通过构造方法
String str2 = new String(buffer1);

// 方式2:通过toString方法
String str3 = buffer1.toString();


0
2
张三zzzzzz
非常感谢!
2023-08-01
共2条回复

Java零基础入门与实战

Java零基础入门与实战 多场景|多案例|全栈项目

277 学习 · 220 问题

查看课程