- 三者共同点:三者均是java提供的表示和操作字符串的类。
- 不同点:
- 首先从源码角度来说 String是内容不可变的字符串 是因为源码中由final进行修饰。
从内存角度来分析:
而StringBuilder 和 StringBuffer都是内容可变字符串。
在字符串拼接时,建议使用StringBuilder和StringBuffer的append()方法,比用String来拼接的效率更高。
public static void main(String[] args) {
String s1 = "a"+"b";
System.out.println(s1);
StringBuilder s2 = new StringBuilder();
s2.append("a").append("b");
System.out.println(s2);
StringBuffer s3 = new StringBuffer();
s3.append("a").append("b");
System.out.println(s3);
}
结果:
ab
ab
ab
2.StringBuilder:线程不安全、效率较高。
StringBuffer:线程安全、效率较低(因为要加锁)。