1. String:字符串常量
StringBuffer:字符串变量(线程安全)
StringBuilder:字符串变量(线程不安全)
2.String:每次改变String的值,都要新创建一个对象,再将引用指向该对象,浪费内存空间,内存中的无用引用多了以后,jvm的GC就开始工作,系统就会慢了。
StringBuffer:StringBuffer每次都是对对象本身进行操作,而有种特殊情况String要比StringBuffer快:
String s="This"+"is a pen";
StringBuffer sb=new StringBuffer("This").append("is a pen");
创建上面这两个的速度其实都差不多,但是下面这种就能体现出StrignBuffer的优势了
String s1="This";
String s2="is a pen";
String s3=s1+s2;
StringBuilder:在字符串缓存区被单个线程使用。
那么重点来了:具体使用场景,我找到了一个很有用的:https://www.zhihu.com/question/20101840