String、StringBuffer、StringBuilder都是表示字符串的,而他们的最明显区别是String在做相应的字符串拼接、更改时String会把原有的回收,而重新创建一个新的字符串;StringBuffer和StringBuilder则不会,它们直接在原有字符串上进行更改。
比如:
String a = “I am a String”;
String b = a+”add b”;
在这里b为”I am a String add b”,在创建b的过程中,a被回收,而创建一个新的字符串b。
StringBuffer buffer = new StringBuffer(“I am a StringBuffer”); buffer.append(“add new String”);
在这里buffer变为 “I am a StringBuffer add new String”。并且自始至终都是一个buffer,并没有创建新的StringBuffer。
StringBuffer和StringBuilder是同一类的,它俩之间的区别在于StringBuilder是线程不安全的,而StringBuffer是线程安全的。
StringBuffer和StringBuilder的构造方法如下: