Java
提供了三种表达字符串的类,分别是String
、StringBuffer
和StringBuilder
。String
类被final
修饰,是不可被继承或被重写的,为什么String
被定义为不可变(immutable
),请前往我的博客为什么String定义为final?;StringBuffer
和StringBuilder
是可变的(mutable
)。
StringBuffer
和StringBuilder
区别表
no | StringBuffer | StringBuilder |
---|---|---|
1(主要区别) | 线程安全。方法大多都被synchronized 修饰,意味着两个线程不能同时调用StringBuffer 方法。 | 线程不安全。意味着俩个线程可以同时调用StringBuilder 方法。 |
2 | 锁消耗时间,任务执行低效 | 单线程高效 |
3 | StringBuffer 类首次出现在JDK 1.0 | StringBuilder 类首次出现在JDK 1.5 |
dibala,上才艺
public static void main(String[] args) {
int n = 77777777;
long t;
{
StringBuffer sb = new StringBuffer();
t = System.currentTimeMillis();
for (int i = 0; i < n; i++) {
sb.append("");
}
System.out.println(System.currentTimeMillis() - t);
}
{
StringBuilder stringBuilder = new StringBuilder();
t = System.currentTimeMillis();
for (int i = 0; i < n; i++) {
stringBuilder.append("");
}
System.out.println(System.currentTimeMillis() - t);
}
}
结果输出
StringBuffer use 3644 seconds
StringBuilder use 262 seconds
Process finished with exit code 0