String:适用于少量的字符串操作的情况,由于String对象是字符串常量,是不可变的,jvm在进行字符串的拼接时相当于为拼接上去的字符串new了一个string,而后拼接完成后重新new一个拼接好的字符串赋给原字符串,而原来的字符串的引用发生了改变,即:
String str="abc"; System.out.println(str); str=str+"de"; System.out.println(str);
str,"de","abcde"分别是三个不同的字符串对象
StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况 ,是线程不安全的
StringBuffer:适用多线程下在字符缓冲区进行大量操作的情,是线程安全的,很多方法有synchronized关键字