StringBuffer和StringBuilder
StringBuffer和StringBuilder
String类的缺点:
String 是一个不可变的数据类型,每每拼接都会产生一个新的字符串,那么内存迟早会被这些拼接的字符串塞满。
String类和StringBuilder和StringBuffer类的区别:
StringBuilder和StringBuffer:可变的字符串,不产生新对象,比较省内存,当进行大量的字符串拼接时建议使用StringBuffer和StringBuilder,但它们两个一些方法的实现几乎跟String一样。
StringBuffer和StringBuilder类:
【相似点】
两者用法一模一样,可以认为是一个类
【区别】
-
StringBuffer线程安全,StringBuilder非线程安全。
-
StringBuilder相比于StringBuffer有速度优势,多数情况下建议使用StringBuilder类,但当被要求线程安全时必须使用StringBuilder类
StringBuffer和StringBuilder 转成String类
StringBuilder sb = new StringBuilder("猫喜欢吃鱼"); String s = sb.toString();
【参考代码】
package String;
public class TestStringBuilder {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();// 一个空的字符串""
StringBuilder sb2 = new StringBuilder("猫喜欢吃鱼");
System.out.println(sb2);// 猫喜欢吃鱼
sb2.append(",狗也喜欢吃鱼");
System.out.println(sb2);// 追加 猫喜欢吃鱼,狗也喜欢吃鱼
sb2.insert(1,"哈哈哈");
System.out.println(sb2); //猫哈哈哈喜欢吃鱼,狗也喜欢吃鱼
// 上述的操作huan'c
// 把StringBuilder转化成String
String s = sb2.toString();
System.out.println(s); //猫哈哈哈喜欢吃鱼,狗也喜欢吃鱼
// 上述操作都可以将StringBuilder换成StringBuffer,结果一样
}
}