关于 StringBuilder 和 StringBuffer 的区别 & 转换
来源:9-10 【可变字符串】高效的可变字符串

张三zzzzzz
2023-07-31
StringBuilder
和 StringBuffer
都是可变的字符串,而且相对与 String 能够更加高效地操作字符串。
想请问下:
- StringBuffer
和 StringBuilder
究竟有什么不同呢 ( 兼容性, 线程,安全性等方面 )?如何使用更加地合适?
- StringBuffer
,StringBuilder
怎么 和 String
相互转换?
写回答
1回答
-
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();
022023-08-01
相似问题