java String和StringBuffer的区别是什么实例源码比较。String 是final类,即不能被继承,为不可变对象,一旦被创建,就不能修改它的值.对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.
StringBuffer也是个final类
但是StringBuffer有一个append()方法,可以对已存在的StringBuffer对象进行修改。
然后用toString把它转换成一个String类型。
看一个例子:
StringBuffer sbf = new StringBuffer(“a”);
sbf.append(“b”);
sbf.append(“c”);
System.out.println(sbf.toString());
结果是输出了”abc”。
那么,我们平时看到的String对象,用“+”改变值,又是怎么实现的呢?
实际上,这相当于还是用StringBuffer还转换的,请看下面代码,完全等价:
代码一:
String str = “a”;
str = str+”b”;
str = str+”c”;
System.out.println(str);
代码二:
String str = “a”;
str = new StringBuffer(str).append(“b”).toString();
str = new StringBuffer(str).append(“c”).toString();;
System.out.println(str);
代码二就是代码一的实现过程!很明显,这样的效率是非常低的,每改变一次都要创建一个StringBuffer对象,然后append(),然后toString()。还不如直接创建一下StringBuffer对象,append()完以后,最后再toString()。