- String是不可变的,StringBuffer是可变的,定义了String对象就不能进行修改,只能进行subString等操作,如果想改,只能重新new一个String对象。而StringBuffer却可以改变,定义了一个StringBuffer对象后,可以通过append和insert等函数进行对StringBuffer对象的修改。
- String类提供了一些方法,用来进行字符串的比较,这个类实现了Object父类的equals()方法,用来比较两个字符串对象的值是否相等。同时还增加了equalsIgnoreCase()方法可以忽略两个字符串对象的大小写区别。但是StringBuffer类并没有实现Object类的Equals方法,所以不能用这个方法来比较两个StringBuffer类的字符串是否相同等,除了equals方法来比较两个字符串对象外,还可以用==来比较字符串。与equals方法不同的是,==不是比较两个字符串的值是否相等,而是比较地址。
- 一般情况下,StringBuffer的效率比String的效率高,
//以下代码String的效率更高
String s1 ="This "+"is "+"a "+"string"
// 在编译的时候会直接编译成,String s1 = "This is a String"
StringBuffer s2="";
s2.append("This");
s2.append(" is");
s2.append(" a");
s2.append(" string");