在Java面试中,被问到这3个类的差异,一时迷糊没记起来。回来查了下api,比较如下:
String是不可变的字符串序列,每次字符串变更的时候,其实都是创建新的对象。
String str = "abc";
is equivalent to:
char data[] = {'a', 'b', 'c'}; String str = new String(data);
StringBuffer是可变的字符串序列,并且是线程安全的,在多线程中使用时,会sychronized。
StringBuilder也是可变的字符串序列,但不是线程安全的,一般被用在单线程中。